Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » X3TC Моддинг: obj-файлы и маленькие утилитки | страница 2
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 2 из 12
На страницу: Пред.  1, 2, 3, ... 10, 11, 12  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал X3: Terran Conflict » Модовый и скриптовый отсек X3: Terran Conflict: «X3TC Моддинг: obj-файлы и маленькие утилитки»
vivere
 





нашла команду NOP, тоесть "ничего не делать" с опкодом 0C. иногда полезна если надо пропатчить обж и один байт остается лишним.
    Добавлено: 02:58 29-11-2009   
klop711
 80 EGP


Рейтинг канала: 3(36)
Репутация: 24
Сообщения: 41
Откуда: Minsk
Зарегистрирован: 19.08.2007
почистил сегменты данных, разобрал структуры:

X3TC_asm_20091230.rar
 Описание:
 Имя файла:  X3TC_asm_20091230.rar
 Размер файла:  2.11 MB
 Скачано:  810 раз(а)
X3TC_c_20091230.rar
 Описание:
 Имя файла:  X3TC_c_20091230.rar
 Размер файла:  774.47 KB
 Скачано:  774 раз(а)


Последний раз редактировалось: klop711 (23:49 30-12-2009), всего редактировалось 1 раз
    Добавлено: 01:55 25-12-2009   
CheckerTwo
 550 EGP


Рейтинг канала: 6(486)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
vivere :
нашла команду NOP, тоесть "ничего не делать" с опкодом 0C. иногда полезна если надо пропатчить обж и один байт остается лишним.

Ага, полезная команда. Кроме того, есть вероятность, что движек поддерживает множество команд, которые не используются кодогенератором ХС, а потому отсутствующих в dasm/xasm-е. Дизассемблинг exe-шника нужен, чтоб вытащить полный набор команд. Интересно б посмотреть Улыбка
    Добавлено: 18:43 29-12-2009   
vivere
 





я как раз этим и занимаюсь. нашла еще несколько команд, но они реально безсмысленны. например прыгнуть на 5 байт вперед.
мечтаю найти режим ассемблерной вставки Улыбка
    Добавлено: 18:45 29-12-2009   
CheckerTwo
 550 EGP


Рейтинг канала: 6(486)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
vivere :
я как раз этим и занимаюсь. нашла еще несколько команд, но они реально безсмысленны. например прыгнуть на 5 байт вперед.

Возможно, что команда предполагалась для организации циклов и обхода всевозможных условных/безусловных переходов... А еще что там есть? Улыбка
    Добавлено: 18:57 29-12-2009   
vivere
 





команд там действительно очень много. намного больше чем в реально используется в обжах. я их не систематизировала, но на вскидку:
(числа надо проверить дебаггером)
AB jump $+6
B1 jump $+7
    Добавлено: 21:08 29-12-2009   
CheckerTwo
 550 EGP


Рейтинг канала: 6(486)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
еще 2 команды:
0x08: pushf 0.0
0x09: pushf 1.0
    Добавлено: 09:47 30-12-2009   
klop711
 80 EGP


Рейтинг канала: 3(36)
Репутация: 24
Сообщения: 41
Откуда: Minsk
Зарегистрирован: 19.08.2007
разбор всех команд смотрите в sub_496A60
/!\ коды там меньше на 1 т.к.: v3 = v8 - 1 и switch по v3
    Добавлено: 12:10 31-12-2009   
vivere
 





Именно эту функцию я и разбираю. Там еще есть одна интересная особенность: некоторые байты кода обжа не соответствуют ему же в памяти. во время загрузки в память программа не только разворачивает все переменные, но и изменяет некоторые команды. я предполагаю, что это происходит оптимизация часто встречающихся последовательностей команд.

..

Заметила баг компилятора в команде pushf.
пишу:
pushf 2000000000.0

после компиляции в файле x3story.lst строчка:
32 0018D0D5: 0A 41DDCD6500000000 pushf 2000000000.0

но в файле x3story.cod на этом месте:
0A0000000000000000

рассчитал то он правильно, а вот почему не записал - не понятно
    Добавлено: 01:52 02-03-2010   
CheckerTwo
 550 EGP


Рейтинг канала: 6(486)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
vivere :

Заметила баг компилятора в команде pushf.
пишу:
pushf 2000000000.0
после компиляции в файле x3story.lst строчка:
32 0018D0D5: 0A 41DDCD6500000000 pushf 2000000000.0
но в файле x3story.cod на этом месте:
0A0000000000000000
рассчитал то он правильно, а вот почему не записал - не понятно


Исправил. Новый файл ассемблера в первом посте. vivere - Спасибо! Улыбка
Сорри за долгое исправление - коммандировки+отчеты...
    Добавлено: 20:33 18-03-2010   
CheckerTwo
 550 EGP


Рейтинг канала: 6(486)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
DIMOSUS.X :
Тоесть теперь будет работать полная песборка обжа Улыбка ?

Ох, что-то тяжко движется...
Поотловил массу багов, больших и маленьких. То, что в X3R казалось неважным, в X3TC приводит к полностью нерабочему результату.
Как оказалось, число формальных аргументов функции должно строго соответствовать числу фактических. Число сие должно быть записано в таблицы SYMB и CLAS.
В результате пришлось отказаться от полной совместимости и ввести новую команду, заменяющую setmem <nstack>.
Новая команда enter <narg>, <nstack> генерирует эквивалентный setmem код, но первый параметр используется для занесения в таблицы числа формальных параметров.

После перекомпиляции игруха не вылетает, местами даже работает Улыбка
Говорить о полностью рабочей версии пока рановато. Где-то что-то еще не так. Однако, патчить кусками уже можно. Вроде проблем не заметил.
Тут бы тестеров...

Обновленные версии - в первом посте.
    Добавлено: 20:21 28-05-2010   
CheckerTwo
 550 EGP


Рейтинг канала: 6(486)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
Проблема оказалась проста, и я ее вроде даже как исправлял в одной из версий. Как и почему этот кусок выпал из проекта - не могу вспомнить...

команда switch <ncase1>, <ncase2> может иметь два варианта. Если первый параметр (ncase1) не равен 0, то команда сравнивает числа:
Код:

L000015D2: switch      3, 0
           .long      L000015F3 ; 0
           .long      53d, L00001576 ; 1
           .long      231d, L00001549 ; 2
           .long      356d, L000015A0 ; 3

Если второй параметр команды switch не равен 0, то выбор варинта производится сравнением строк.
Код:

L0000E105: switch      0, 5
           .long      L0000E136 ; 0
           .long      S00002EC0, L0000DC98 ; 1 -- "player"
           .long      S00002E96, L0000DDEA ; 2 -- "sector"
           .long      S00002EC7, L0000DE6B ; 3 -- "sectors"
           .long      S00002EBB, L0000DF9F ; 4 -- "ship"
           .long      S00002ECF, L0000E000 ; 5 -- "ships"


Исправленный дизассемблер - в первом посте. Ассемблер такие конструкции понимает.

Вроде все работает. Летаю на перекомпиленных обжах. Улыбка
    Добавлено: 04:41 30-05-2010   
DNA78
 420 EGP


Рейтинг канала: 9(1060)
Репутация: 70
Сообщения: 1191
Откуда: Кыргызстан
Зарегистрирован: 12.11.2008
Ничего не пойму Разозлен , как собрать дизассемблированный обж обратно. Какой файл ему нужно подсунуть ???? И вообще есть какие нибудь инструкции по разборке и сборки obj файлов, а то программы есть, описания каких-то команд есть, а как его собрать обратно нет.
Разобрал обж с помощью Дизассемблера - версия x04.08a на :
x3story.asm
x3story.def
x3story.err
x3story.out
x3story.pct
x3story.str
x3story.sym
x3story.var
Я так понял работать нужно с x3story.asm. Допустим я его изменил и... Подсовывая его Ассемблеру - версия x04.07a я никаких obj файлов не получаю, уже что только не подсовывал Разозлен . Как мне обратно получить x3story.obj?
_________________
Очевидное-невероятное

Последний раз редактировалось: DNA78 (06:00 26-06-2010), всего редактировалось 1 раз
    Добавлено: 19:54 25-06-2010   
Криптон
 995 EGP


Рейтинг канала: 9(1038)
Репутация: 164
Сообщения: 2665
Откуда: Москва
Зарегистрирован: 05.04.2008
Мой совет:
положить x3story.asm в отдельную папку, где нет других файлов.
Скормить его xa_asm.exe.
В папке должны появиться x3story.cod, x3story.err и x3story.lst.
x3story.cod - это и есть скомпилированный obj, ему надо только расширение поменять.
Возможно, x3story.cod не появится - тогда в x3story.err будет список ошибок, помешавших компиляции.
    Добавлено: 20:51 25-06-2010   
YOYOMAN
 71 EGP


Рейтинг канала: 2(21)
Репутация: 1
Сообщения: 141
Откуда: Украина
Зарегистрирован: 13.07.2010
Привет всем!!! Скажите что такое obj и как его редактировать.
А тоя в этом вопросе полный нуб.
_________________
Unreal Engine 4
    Добавлено: 12:26 15-07-2010   
YOYOMAN
 71 EGP


Рейтинг канала: 2(21)
Репутация: 1
Сообщения: 141
Откуда: Украина
Зарегистрирован: 13.07.2010
Привет!!!! А как неигровые расы сделать игровыми??? Чтоб можна было использовать в скриптах.
_________________
Unreal Engine 4
    Добавлено: 19:45 15-07-2010   
YOYOMAN
 71 EGP


Рейтинг канала: 2(21)
Репутация: 1
Сообщения: 141
Откуда: Украина
Зарегистрирован: 13.07.2010
klop711 :
глюков вагон и маленькая тележка (пока это сырая альфа
Привет!! Скажи пожалуйста как разлочить неигровые расы??
_________________
Unreal Engine 4
    Добавлено: 22:59 18-07-2010   
DIMOSUS.X
 995 EGP


Рейтинг канала: 8(921)
Репутация: 188
Сообщения: 3252
Откуда: Vilnius/Minsk
Зарегистрирован: 06.08.2008
К тому что ковыряют обж егософт хоть и с трениями, но кое-как привык. А вот за ехе еще можно влететь.
Дружеский пилотский совет - не стоит выкладывать такое на ЕГ.

добавлено спустя 2 минуты:
YOYOMAN :
Привет!! Скажи пожалуйста как разлочить неигровые расы??

"Если бы я знал вопрос на этот ответ, я бы правил миром" (с)

Один из-законов Мерфи :пока сам не разберешься, ни кто не поможет.
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.

Последний раз редактировалось: DIMOSUS.X (23:04 18-07-2010), всего редактировалось 1 раз
    Добавлено: 23:04 18-07-2010   
DNA78
 420 EGP


Рейтинг канала: 9(1060)
Репутация: 70
Сообщения: 1191
Откуда: Кыргызстан
Зарегистрирован: 12.11.2008
Не компилируется файл x3story для версии X3TC v.3. Выдаёт следующие ошибки:
 Cкрытый текст   (кликните здесь для просмотра)

Использую Ассемблер версии x04.07a альфа и Дизассемблер версии 04.08a.
_________________
Очевидное-невероятное

Последний раз редактировалось: DNA78 (13:37 26-10-2010), всего редактировалось 1 раз
    Добавлено: 13:36 26-10-2010   
CheckerTwo
 550 EGP


Рейтинг канала: 6(486)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
DNA78 :
Не компилируется файл x3story для версии X3TC v.3. Выдаёт следующие ошибки:
...
Использую Ассемблер версии x04.07a альфа и Дизассемблер версии 04.08a.


Хм. Интересно.
Это тот самый тип переменных, который был в Х2-Х3, но по каким-то причинам не использовался доселе в Х3ТС. А так как идентификаторы типов переменных изменились и проверить было не на чем, я заблокировал на всякий случай ".var".

0000 FFFFFFFF | 11 00000000 00000000 4C447672 | gs_DebugDump
жирным выделено поле типа переменной

В дизассемблере и ассемблере это я поправлю. Но интересно также и другое - во всех предыдущих сборках отладка была принудительно отключена. В объявлениях переменных стояло
.vint gs_DebugDump = -2147483648d ; = 80000000h
Вероятно забыли отключить при окончательной сборке.

PS: Пока я правлю ассемблер - попробуй вместо строки с "undefined" поставить то, что было раньше - .vint gs_DebugDump = -2147483648d
    Добавлено: 09:44 04-11-2010   
Канал X3: Terran Conflict -> Модовый и скриптовый отсек X3: Terran Conflict: «X3TC Моддинг: obj-файлы и маленькие утилитки»
На страницу: Пред.  1, 2, 3, ... 10, 11, 12  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Пламя загорается только в двух случаях - если есть дрова, это я ... (Cool Sniper в отсидке)

  » X3TC Моддинг: obj-файлы и маленькие утилитки | страница 2
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18