Автор Тема: [SMD] хакинг Dune: The Battle for Arrakis  (Прочитано 1401508 раз)

dusha6613 и 5 Гостей просматривают эту тему.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1140 : 31 Июль 2010, 02:04:00 »
Хорошо, когда есть поддержка из хакинга пк-шной дюны.

Да и не много пошаманил с вап-сайтом, так что теперь по нему можно ходить.

Оффлайн Petrosyan

  • Пользователь
  • Сообщений: 33
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1141 : 31 Июль 2010, 17:17:44 »
Сорри за баг, это я немного с цветами перепутал.(цвет от темы там зависит)

Оффлайн BArt___1995

  • Пользователь
  • Сообщений: 95
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1142 : 01 Август 2010, 15:14:00 »
Парни, извините, я в ромхакинге не крут, в общем мне нужны спрайты(желательно все) с сеговской дюны...
нашёл только с какой-то dune 2 (маленькие)
если есть уже дайте ссыль)

Оффлайн Titanishu

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1143 : 03 Август 2010, 21:12:46 »
А что нибудь есть по поводу игры вдвоем? :)

Оффлайн lupus

  • Пользователь
  • Сообщений: 3809
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1144 : 04 Август 2010, 00:54:02 »
нет

Оффлайн Petrosyan

  • Пользователь
  • Сообщений: 33
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1145 : 05 Август 2010, 18:24:46 »
Небольшой гайд по созданию новых юнитов(все изменения производятся на оригинальной роме U-версии,выложил патч)
1.Ищем список адресов на юниты( в роме $6C5BC-$6C624).
2.Переносим этот список в конец рома(в роме $FF0A0)
3.Меняем все значения в роме с $6C5BC на $FF0A0.
4.Берем данные любого юнита и копируем(!) в конец рома(в роме $FF2A4)
5.Добавляем адрес этого юнита в конец списка.
6.Всего у нас 26 юнитов,а этот 27-ой.Поэтому в объект-файле можем писать тип юнита $1B(на земле или десант).(в роме в 1ой миссии за Ордосов вместо райдер трайков)
Все!
НО! юниты не понимают ни одного приказа >:(
(в роме я походил поганкой, теперь почему-то вражеская пехота не атакует,а захватывает здания)

Оффлайн -DeN-

  • Пользователь
  • Сообщений: 105
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1146 : 07 Август 2010, 09:36:46 »
такой вопрос, возможно ли в этой дюне сделать выделение армии так же как это к примеру сделанно в Dune 2000 Long Live the Fighters ???

Оффлайн Roket

  • Пользователь
  • Сообщений: 3324
  • Пол: Мужской
  • Злой Котэ
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1147 : 07 Август 2010, 11:30:24 »
-DeN-, для сеги это уж слишком круто и как следствие практически невыполнимо, очень много кода нужно переписать тогда. Если хочешь толпой воевать, просто прикажи юниту следовать за другим, то есть "паровозик" создать ;).

Оффлайн Petrosyan

  • Пользователь
  • Сообщений: 33
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1148 : 07 Август 2010, 12:48:09 »
вне конфига ёще задается подрыв девастатора.А если поменять карриол на пехотинца(я так пробовал),то на карриол начнут нападать враги.также вне конфига задаются аватары юнитов на заводе(те якобы WSA-файлы)
я посмотрел юнит редактор для комповской дюны ,и был удивлен,все данные практически одинаковы.правда кроме приказов,и того,что указал Ti_
« Последнее редактирование: 07 Август 2010, 12:54:19 от Petrosyan »

Оффлайн -DeN-

  • Пользователь
  • Сообщений: 105
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1149 : 07 Август 2010, 14:22:54 »
"паровозик" создать ;).
Понятно, значит неосуществимо. Да я так раньше и делал, эту игру знаю вдоль и поперёк, но играть паравозиком не очень удобно, один тогда реагирует, а другие нет, да и толку щас нет уже не интересно всё проходить заново (легко). Ti_, Всё таки "мясо" облегчает процесс. А играть можно и одним юнитом и при этом даже разнести базу, там в этой дюне непродуманностей много.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1150 : 07 Август 2010, 17:48:40 »
Я так думаю, что в коде емк можно приписать отряды для юнитов. Чтоб во время приказа при отношении юнита к отряду, юнит направлялся к указанной цели. И все юниты отряда шли бы туда. Был я на гражданке, попробовал бы провернуть

Оффлайн MrFlibble

  • Пользователь
  • Сообщений: 23
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1151 : 08 Август 2010, 04:44:01 »
Всем дружеский привет (еще раз) от моддеров PC-версии "Дюны 2"! :) Очень рад был увидеть, что исследование и моддинг сеговской версии идет полным ходом :thumbup:

WSA-файлы в PC-версии - это большие анимированные картинки юнитов и зданий, которые показываются на экране справки Ментата, а также в полноэкранном меню производства зданий. Кстати, я и не думал, что EMC-файлы используются и в сеговской версии. Видимо, исходный код, действительно, не был сильно модифицирован при портировании.

dune2 unit editor от ПК-версии, тут побитово разобраны некоторые флаги + те, что я не определил.
только надо сверять с моим списком, т.к. в нём параметры не указывают тип  , а нет , всё же есть - просо надо нажать F11.  , требует dune2.exe  от пк-версии. (т.к. конфиги находятся внутри экзе)
Я сказал автору редактора, Nyerguds'у, что его творение используется для благого дела, он очень рад и тоже шлет вам привет :) Правда, его немного огорчило, что редактор был назван всего лишь "dune 2 unit editor" (вместо "Dune 2 Editor"), ведь потенциально это универсальный редактор, который уже сейчас позволяет изменять параметры не только юнитов и зданий, но и Домов, а также файлов, используемых игрой (хотя для целей изучения сеговской версии последнее может и не пригодиться).

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1152 : 08 Август 2010, 11:00:11 »
Сможешь выдать как можно больше инфы о работе писишной дюны? Про юниты, строения, дома, команды(team). Ещё хотелось бы про карту на экране брифинга узнать, как она построена, чтоб цвета участков земли можно было менять.
И хотелось бы узнать про состав WSA анимаций. И если есть там сжатие данных, то и про них тоже хочется знать. Надеюсь тебе не составит труда?

Оффлайн Titanishu

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1153 : 08 Август 2010, 15:00:57 »
Мучался мучался с редактором сегамэновским, так и не доперло.
Создаю миссию, ландшафт, ставлю чтобы она была вместо 9ой...
А вот куда и под каким именем что сохранять чтобы в это поиграть можно было?
Сохранить миссию, выбираю ром дюны(u), сохранить... при запуске только черный экран.
Объясните что и как тут надо сделать,а? ::)

Оффлайн MrFlibble

  • Пользователь
  • Сообщений: 23
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1154 : 08 Август 2010, 19:53:57 »
Сможешь выдать как можно больше инфы о работе писишной дюны? Про юниты, строения, дома, команды(team).
Постараюсь :) Что конкретно интересует? Команды - это, по сути, очень простые скрипты, прписанные для каждой миссии, которые определяют, какие группы юнитов компьютер должен слать на врага. Например:
1=Harkonnen,Normal,Wheeled,2,3Это означает, что ИИ-Харконнены должны строить группы их двух-трех колесных юнитов (квадов) и слать их на базу игрока. Использовалось два типа групп - Normal и Kamikaze, первые будут по пути отстреливаться, если их атакуют, вторые - игнорировать вражеский огонь и переть прямо к выбранной цели (наиболее приоритетному зданию игрока). К сожалению, большинство этих скриптов в PC-версии все равно не работали, т.к. по ошибке везде вместо Wheeled и Tracked (т.е. колесной и гученично техники соответственно) было прописано неправильное Wheel и Track, так что ИИ использовал только атакующие группы пехоты, а технику строил по одному юниту и сразу бросал их на базу игрока (группы, в общем, действуют более организованно. чем индивидуальные юниты, например, моугт отступать и т.п.). Я сделал небольшой патч, исправляющий, среди прочих, эту ошибку (сорри за саморекламу :)).

Ещё хотелось бы про карту на экране брифинга узнать, как она построена, чтоб цвета участков земли можно было менять.
В PC-версии карта показывается не во время брифинга, а до него, т.к. там еще можно выбирать из нескольких вариантов каждой миссии (как в играх серии Command & Conquer). "Раскраска" карты прописана в файлах REGION#.INI (где # - первая буква названия Дома, т.е. A, H или O), они, по-моему, валяются и в РОМе. Там же есть и текст, сопровождающий изменения на карте (после каждой миссии завоеванные регионы закрашиваются цветом Дома игрока, другие Дома тоже что-то отвоевывают друг у друга и т.п.) Пример:
[GROUP1]
HAR = 6, 5, 4, 10, 3, 9
ATR = 13, 7, 20, 14, 21, 22
ORD  = 19, 27, 26, 25, 24, 23
REG1 = 1, 7, 40, 16
REG2 = 2, 8, 106, 34
REG3 = 8, 7, 136, 72
ENGTXT6 = Harkonnen arrived first.
ENGTXT13 = The weak Atreides will be easy.
ENGTXT19 = The Ordos are getting closer.
Цифры напротив названий Домов обозначают, какие регионы (их всего 27) надо закрасить цветом данного Дома, строки "REG# =" - это те регионы, которые игрок может выбрать для следующего завоевания (по порядку идут: номер региона, номер спрайта стрелки, которая будет указывать направление захвата, x-координата левого верхнего угла спрайта стрелки на экране, y-координата левого верхнего угла спрайта стрелки на экране)

И хотелось бы узнать про состав WSA анимаций. И если есть там сжатие данных, то и про них тоже хочется знать. Надеюсь тебе не составит труда?
Существует набор утилит, поддерживающий конверсию WSA->PNG и обратно под названием Red Horizon Utilities (изначально предназначенный для игры Red Alert, там тоже используется формат WSA, правда, немного другой. В пакете с утилитами есть и исходники, по которым, я так думаю, можно узнать о самом формате больше. К сожалению, сам я не очень компетентен в программировании, так что описать формат не смогу. Точно знаю, что алгоритм компрессии там присутствует, и, наверное, он там такой же или похожий на то, что используется другими графическими форматами, например, SHP (Red Horizon Utilities формат SHP также поддерживают).

Привет.  :)

В редакторе есть такой параметр: 'Threat levev for AI' , также перед ним идет unknown23,  по сути они являются часть одного целого, это видно по коду сеги.
Правда я еще не понял как это влияет на ИИ.

ROM:0006BFCE                 dc.w $82                ; ??  $235C4 $235C8 $472E8
ROM:0006BFD0                 dc.w $96                ; ??  $472E4

Участок $472E4
ROM:000472DE                 bne.s   threat
ROM:000472E0                 moveq   #0,d0
ROM:000472E2                 bra.s   loc_4730E
ROM:000472E4 ; ---------------------------------------------------------------------------
ROM:000472E4
ROM:000472E4 threat:                                 ; CODE XREF: sub_4716E+170j
ROM:000472E4                 move.w  $30(a4),d3
ROM:000472E8                 add.w   $2E(a4),d3
ROM:000472EC                 tst.w   d4
ROM:000472EE                 beq.s   loc_472FE
ROM:000472F0                 move.w  d3,d1
ROM:000472F2                 move.w  d4,d0
ROM:000472F4                 jsr     sub_49BE0
ROM:000472FA                 move.w  d1,d3
ROM:000472FC                 addq.w  #1,d3
ROM:000472FE
ROM:000472FE loc_472FE:                              ; CODE XREF: sub_4716E+180j
ROM:000472FE                 cmpi.w  #32000,d3
ROM:00047302                 bls.s   loc_4730A
ROM:00047304                 move.w  #32000,d0
ROM:00047308                 bra.s   loc_4730E
OM:0004730A ; ---------------------------------------------------------------------------
ROM:0004730A
ROM:0004730A loc_4730A:                              ; CODE XREF: sub_4716E+194j
ROM:0004730A                 moveq   #0,d0
ROM:0004730C                 move.w  d3,d0
ROM:0004730E
ROM:0004730E loc_4730E:                              ; CODE XREF: sub_4716E+16j
ROM:0004730E                                         ; sub_4716E+28j ...
ROM:0004730E                 movem.l (sp)+,d3-d4/a2-a5
ROM:00047312                 rts



ROM:00049BE0 sub_49BE0:                              ; CODE XREF: sub_1068C+86p
ROM:00049BE0                                         ; sub_2E684+72p ...
ROM:00049BE0                 swap    d1
ROM:00049BE2                 clr.w   d1
ROM:00049BE4                 swap    d1
ROM:00049BE6                 divu.w  d0,d1
ROM:00049BE8                 swap    d1
ROM:00049BEA                 clr.w   d1
ROM:00049BEC                 swap    d1
ROM:00049BEE                 rts

$30(a4)=threat  , $2E(a4)=unknown23.

что они там курили?  и так складываем оба значения, далее если d4 не 0 , то делим сумму на d4, добавляем 1, сравниваем с 32000, и пишем в d0, если больше получилось пишем 32000.


Но как видно unknown23, еще используется и в другом месте:

OM:000235A4                 jsr     (randomisation).l
ROM:000235AA                 andi.b  #3,d0
ROM:000235AE                 bne.s   loc_235B4
ROM:000235B0                 move.w  d5,d3
ROM:000235B2                 bra.s   loc_235DA
ROM:000235B4 ; ---------------------------------------------------------------------------
ROM:000235B4
ROM:000235B4 loc_235B4:                              ; CODE XREF: sub_23500+AEj
ROM:000235B4                 cmpi.w  #$FFFF,d3
ROM:000235B8                 beq.s   loc_235CE
ROM:000235BA                 movea.l (a2),a1
ROM:000235BC                 move.w  d3,d0
ROM:000235BE                 lsl.w   #2,d0
ROM:000235C0                 movea.l (a3,d0.w),a0
ROM:000235C4                 move.w  $2E(a1),d0
ROM:000235C8                 cmp.w   $2E(a0),d0
ROM:000235CC                 ble.s   loc_235D0
ROM:000235CE
ROM:000235CE loc_235CE:                              ; CODE XREF: sub_23500+B8j
ROM:000235CE                 move.w  d5,d3
ROM:000235D0
ROM:000235D0 loc_235D0:                              ; CODE XREF: sub_23500+A2j
ROM:000235D0                                         ; sub_23500+CCj
ROM:000235D0                 addq.l  #4,a2
ROM:000235D2                 addq.w  #1,d5
ROM:000235D4                 cmpi.w  #$20,d5
ROM:000235D8                 blt.s   loc_2359C
ROM:000235DA
ROM:000235DA loc_235DA:                              ; CODE XREF: sub_23500+Cj
ROM:000235DA                                         ; sub_23500+B2j
ROM:000235DA                 move.w  d3,d0
ROM:000235DC
ROM:000235DC loc_235DC:                              ; CODE XREF: sub_23500+84j
ROM:000235DC                                         ; sub_23500+90j
ROM:000235DC                 movem.l (sp)+,d3-d5/a2-a3
ROM:000235E0                 rts
а тут идет сравнение 'unknown23'  от двух разных юнитов, и если меньше или равно, то что-то там происходит, а если больше то что-то другое.
Да, я помню, параметр Unknown 023 у нас обсуждался. Вот что пишет тов. TrueBrain (из проекта OpenDUNE, это воссоздание движка PC-версии Dune II на основе инженерного анализа программы, рекомендую ознакомиться, там тоже много полезной инфы - и на сайте, и на форуме): этот параметр используется при выборе наиболее приоритетной цели, а также при выборе того, какие юниты ИИ собирается строить. При этом происходит проверка, есть ли у ИИ грузолет и харвестер (если есть, больше строить не надо), а среди прочих юнитов для строительства обычно отбираются те, у кого этот параметр выше.

А вот немного инфы о Lemonfactor'e  домов:

ROM:000469C6                 jsr     (randomisation).l
ROM:000469CC                 move.w  d0,d2
ROM:000469CE                 move.w  d3,d0
ROM:000469D0                 lea     (Houses).l,a1
ROM:000469D6                 add.w   d0,d0
ROM:000469D8                 move.w  d0,d1
ROM:000469DA                 lsl.w   #4,d0
ROM:000469DC                 sub.w   d1,d0
ROM:000469DE                 adda.w  d0,a1
ROM:000469E0                 ext.l   d2
ROM:000469E2                 moveq   #0,d0
ROM:000469E4                 move.w  6(a1),d0        ; lemonfactor
ROM:000469E8                 cmp.l   d0,d2
ROM:000469EA                 bge.s   loc_469F2
ROM:000469EC                 bset    #2,4(a2)
ROM:000469F2
ROM:000469F2 loc_469F2:                              ; CODE XREF: UNIT_CREATING+10Aj
ROM:000469F2                                         ; UNIT_CREATING+130j
ROM:000469F2                 moveq   #1,d5

берется рандом число кидается в d2 (jsr     (randomisation).l
ROM:000469CC                 move.w  d0,d2), грузится lemon по id дома (move.w  6(a1),d0), сравнивается его 'лимонфактор' с этим числом. (cmp.l   d0,d2)
если что-то там больше получилось  то переход дальше, а если меньше , то записывается '1'-ка в третий бит  строки юнита+4 ,   (set    #2,4(a2) ) ,  [в a2 лежит адрес строки текущего юнита].

Ну и как видно это всё происходит при создании юнита. (unit creating я назвал ROM:000468BA UNIT_CREATING:    )

А вот за что этот бит отвечает, да фиг его знает, я не смотрел.  ^_^  Т.е. надо проверить чтение скажем с адреса $FFE138+4,  где $FFE138 - адрес строки 2-ого наземного юнита.

Да, TrueBrain об этом тоже говорил, но мы так и не догадались, зачем это нужно. Кто-то предположил, что это влияет на агрессивность юнитов, но неизвестно, верно это или нет.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1155 : 08 Август 2010, 23:26:45 »
Мучался мучался с редактором сегамэновским, так и не доперло.
Создаю миссию, ландшафт, ставлю чтобы она была вместо 9ой...
А вот куда и под каким именем что сохранять чтобы в это поиграть можно было?
Сохранить миссию, выбираю ром дюны(u), сохранить... при запуске только черный экран.
Объясните что и как тут надо сделать,а? ::)
Дядь, сохраняя карту в дюну, ты тупо замещаеш игру миссией, а миссия - это не игра, это миссия. Сохраняй миссию в файл миссии, затем сохраняй ландшафт, собирай ром и тесть наздоровье. Мануал гляди на сайте моём. dune-hacking.wen.ru в разделе редактора

Добавлено позже:
Скачай Dune2Builder, извлекай, в корневую кидай dune2.bin версии u, запускай split.bat, в разделе src/obj сохраняй миссию(палата обозначается буквой после scen, напр.: scena008.ini), в src/map карту под номером указанной в миссии(смотри на экране палат слева под брифингом в редакторе). Т.Е. map_025.bin если в миссии 25, теперь в корневой запускай build.bat и довольствуйся dune2build.bin

Добавлено позже:
вот прямая ссылка на мануал.

Оффлайн MrFlibble

  • Пользователь
  • Сообщений: 23
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1156 : 09 Август 2010, 03:28:59 »
У меня как раз была идея чтобы убить приоритеты эти, и рассчитывать по тупой формуле - атакуй того, кто ближе!.  Вот тогда и посыпется атака и оборона игроков, когда AI на юнитов попрет и на пушки. Ну и  с харвестером лажа - бот их не строит , на последнем левеле ему 3дается  - 2прибить, и он до конца игры и останется с одним.
В принципе, юниты в группах типа Normal и так отвечают на огонь юнитов игрока. А вот на огонь оборонительных сооружений не отвечают, по-моему, никогда. Мне удалось заставить ИИ атаковать пушки только тогда, когда я через редактор установил им максимальный приоритет.

ДА ещё бота мочить сониками просто ,он на них не реагирует...баг,фича??
Вот насчет этого, увы, сейчас не помню, есть такое в PC-версии или нет.

Ещё вспомнил самый злостный баг- бот не умеет отстраивать тяжелый машинный завод (один раз снёс и всё!) - только не понмю на ПК также или там нормально?
В PC-версии у ИИ с этим проблем нет. (Правда, в непропатченной версии 1.0 он вообще редко отстраивает разрушенные здания.) Возможно, все дело в том, что в сеговской версии легкий и тяжелый заводы объединили в один. Еще стоит отметить, что ИИ "помнит" только пять последних разрушенных зданий, которые надо отстроить. Поэтому если быстро разрушить много строений, часть из них ИИ больше никогда уже не отстроит заново. Еще ИИ никогда не отстраивает здания, которые были захвачены игроком.

Вот кажется нашел проверки этого бита (лимонфактора) в коде, в 2местах:

ROM:00046712 watch4:                                 ; lemonfactor2 ?
ROM:00046712                 move.w  4(a2),d0
ROM:00046716                 btst    #$A,d0
ROM:0004671A                 beq.s   loc_4673A
ROM:0004671C                 jsr     (randomisation).l
ROM:00046722                 andi.b  #3,d0
ROM:00046726                 bne.s   loc_4673A
ROM:00046728                 move.w  #0,(sp)
ROM:0004672C                 move.w  #1,-(sp)
ROM:00046730                 move.l  a2,-(sp)
ROM:00046732                 jsr     sub_46BAE
ROM:00046738                 addq.l  #6,sp
ROM:0004673A
ROM:0004673A loc_4673A:                              ; CODE XREF: sub_46084+696j
ROM:0004673A                                         ; sub_46084+6A2j
ROM:0004673A                 cmpi.b  #6,2(a2)
ROM:00046740                 bne.w   loc_467CA

ROM:0000BE76                 moveq   #0,d0
ROM:0000BE78                 move.w  4(a2),d0        ; lemonfactor ?
ROM:0000BE7C                 btst    #$A,d0
ROM:0000BE80                 beq.s   loc_BEC4
ROM:0000BE82                 move.w  $10(a4),d0
ROM:0000BE86                 asr.w   #1,d0
ROM:0000BE88                 cmp.w   $12(a2),d0
ROM:0000BE8C                 bge.s   loc_BEC4
ROM:0000BE8E                 move.b  8(a2),d0
ROM:0000BE92                 ext.w   d0
ROM:0000BE94                 lea     (decay).l,a1
ROM:0000BE9A                 add.w   d0,d0
ROM:0000BE9C                 move.w  d0,d2
ROM:0000BE9E                 lsl.w   #4,d0
ROM:0000BEA0                 sub.w   d2,d0
ROM:0000BEA2                 move.w  (a1,d0.w),d3
ROM:0000BEA6                 moveq   #0,d0
ROM:0000BEA8                 move.w  4(a2),d0        ; lemon
ROM:0000BEAC                 btst    #$A,d0
ROM:0000BEB0                 beq.s   loc_BEB4
ROM:0000BEB2                 addq.w  #1,d3
ROM:0000BEB4
ROM:0000BEB4 loc_BEB4:                               ; CODE XREF: Buildings_work+1D4j
ROM:0000BEB4                 move.w  #0,(sp)
ROM:0000BEB8                 move.w  d3,-(sp)
ROM:0000BEBA                 move.l  a2,-(sp)
ROM:0000BEBC                 jsr     sub_F8DA
ROM:0000BEC2                 addq.l  #6,sp
ROM:0000BEC4
ROM:0000BEC4 loc_BEC4:                               ; CODE XREF: Buildings_work+198j
ROM:0000BEC4                                         ; Buildings_work+1A4j ...
ROM:0000BEC4                 tst.w   d6
ROM:0000BEC6                 beq.w   loc_C55A

Добавлено позже:
вообщем я прописал NOP'ы по    beq.s   loc_4673A и ROM:00046726                 bne.s   loc_4673A,
чтобы всегда выполнялся код  по джампу  jsr     sub_46BAE, независимо от бита A.

в итоге при тесте заметил самоповреждения юнитов при езде (вприцнипе уже догадывался.. так, как во втором участке присутстовал decay), да и такие штуки я еще на сеге помню.

далее убрал нопы - и перезапустил миссию - повреждений нет.

вот скриншоты:
поврежденный и не поврежденный джип и танк:

Так что думаю лимонфактор есть вероятность саморазрушений юнита(выпуск бракованных юнитов - ведь бит ставится только при создании :lol: ) , ну а рандом там еще добавлен видимо, чтобы такие юниты не cлишком быстро и не плавно ломались  ( andi.b #3,d0 ).

Попробуйте поставить lemonfactor = FFFF.
p.s. у меня не повлияло, ну не бред? неясно.. бит то вроде тот.
Ого, как интересно! Никогда бы не подумал! 0_0

Я еще вот что хотел спросить. В сеговской версии фримены представляют собой отдельный тип юнитов со своими иконками и характеристиками (насколько мне известно, у них ровно в два раза больше хитпойнтов, чем у обычной тяжелой пехоты). В PC-версии, однако, дворец Атрейдесов вызывает группу обычной тяжелой пехоты, только принадлежащей фрименам. При этом в файлах игры есть иконки для одиночного фримена и группы фрименов, но используется только "групповая" иконка, да и то не у вызванных юнитов (у них обычные иконки тяжелых пехотинцев), а на кнопке вызова во дворце. Хотел спросить, а в сеговской версии фрименская пехота - это отдельные юниты (в коде), или же есть какой-то дополнительный модификатор, который делает тяжелым пехотинцам фрименов другие иконки и больше здоровья?

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1157 : 09 Август 2010, 08:17:03 »
Адредисовские фремены - обычные юниты с тупо заменёнными иконками и завышенным хп. Так это обычные юниты

Оффлайн MrFlibble

  • Пользователь
  • Сообщений: 23
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1158 : 10 Август 2010, 17:49:23 »
вот ещё раз код чтобы не искать:

ROM:00022EA2                 lea     (fremens_quanit).l,a1
ROM:00022EA8                 move.b  (a1,d3.w),d6
ROM:00022EAC                 ext.w   d6
ROM:00022EAE                 moveq   #0,d5
ROM:00022EB0                 lea     (fremens_utype).l,a4
ROM:00022EB6                 bra.w   loc_22FFC
ROM:00022EBA ; ---------------------------------------------------------------------------
ROM:00022EBA
ROM:00022EBA loc_22EBA:                              ; CODE XREF: SUPERWEAPON+336j
ROM:00022EBA                 addq.w  #1,(word_FFC148).l
ROM:00022EC0                 jsr     (randomisation).l ; angle position randomisations
ROM:00022EC6                 move.w  d0,(sp)
ROM:00022EC8                 move.w  #1,-(sp)        ; accurate positions
ROM:00022ECC                 move.w  #$1E,-(sp)      ; range between fremens
ROM:00022ED0                 move.l  d4,-(sp)
ROM:00022ED2                 jsr     sub_1168C
ROM:00022ED8                 addq.l  #8,sp
ROM:00022EDA                 move.l  d0,-(sp)
ROM:00022EDC                 moveq   #3,d0           ; fremen house
ROM:00022EDE                 move.w  d0,-(sp)
ROM:00022EE0                 move.w  d0,-(sp)
ROM:00022EE2                 move.w  #0,-(sp)
ROM:00022EE6                 jsr     (random_for_xz).l ; fremen signle trooper
ROM:00022EEC                 addq.l  #4,sp
ROM:00022EEE                 add.w   d0,d0
ROM:00022EF0                 move.w  (a4,d0.w),-(sp)
ROM:00022EF4                 move.w  #$FFFF,-(sp)
ROM:00022EF8                 jsr     UNIT_CREATING
ROM:00022EFE                 lea     $A(sp),sp
ROM:00022F02                 movea.l a0,a2
ROM:00022F04                 subq.w  #1,(word_FFC148).l
ROM:00022F0A                 move.l  a2,d0
ROM:00022F0C                 beq.w   loc_22FFA
ROM:00022F10                 lea     $12(a2),a1
ROM:00022F14                 move.w  (a1),d0
ROM:00022F16                 add.w   d0,d0
ROM:00022F18                 move.w  d0,(a1)


Заменил moveq #3,  на moveq #1  (id дома) - вызвались уже атредские фремены(которыми управляет игрок) - моды на жизни остались, а вот иконки уже обычных труперов.   И вроде как моды на дамаг пропали.  
Т.е. иконки и дамаг зависят от дома (можно глянуть код опроса иконок), а мод на жизни задается при вызове.

Да , если $12(ram_unit) - жизни (не проверял), то тут же видно удвоение их:

ROM:00022F10                 lea     $12(a2),a1
ROM:00022F14                 move.w  (a1),d0
ROM:00022F16                 add.w   d0,d0
ROM:00022F18                 move.w  d0,(a1)
загрузка их в d0, прибавить d0+d0 (умножение на 2) , и запись обратно в (a1).  ; a1=$12(a2).
Здорово, спасибо! :) Может быть, аналогичный код есть и в PC-версии (если уж иконки фрименов есть) и удастся его активировать :D

Да их объединили, но не совсем - физически их 2разных осталось. Просто тяжелый на легкий для игрока заменяется с 4-ого левела, а вот в миссиях ботам поставлены оба вида заводов, только внешне одинаково выглядят. Но раз на ПК этого бага не было, то как вариант где-то просчитались.
Интересно. Получается, исходный код был действительно модифицирован по минимуму. Кстати, в связи с этим вот еще какой вопрос: в PC-версии у каждого производственного здания есть 8 слотов для типов юнитов, доступных для строительства (это не касается списка зданий в сбордворе и списка юнитов в космопорту). Поскольку в сеговской версии легкий и тяжелый заводы объединены, список юнитов больше восьми (на PC все 8 слотов тяжелого завода заняты, т.к. это общий список, где прописаны спецтанки все трех Домов). Как с этим обстоит дело на Сеге? Количество слотов было увеличено или разработчики поступили как-то иначе?

взломал немало кода (перебирал всё подряд от балды), нужно ли выкладывать?
Конечно! Будет интересно посмотреть :)

Добавлено позже:
Еще тут вспомнил, что в руководстве к PC-версии упоминалось, что некоторые Дома могут минировать свои сооружения, и если игрок такие здание захватит, то через некоторое время оно взорвется. Однако в игре это не наблюдается. Интересно, а код для этого не остался в сеговской версии? Например, в PC-версии удалось найти код для упомянутых в том же руководстве холмов на карте - не тех, которые создают новые поля спайса после того, как по ним выстрелить или в такой холм забредет юнит, а таких холмов, которые по функции сопоставимы с ящиками из других стратегий от Westwood, т.е. они либо дают деньги, либо появляются юниты. Хотя такие холмы нигде в игре не используются, код остался, и их можно размещать на карте. Стрельба по ним ничего не дает, но если юнит их переезжает, он не пропадает, а эффекты могут быть такие: 1) игрок получает произвольную сумму кредитов, 2) появляется пехота Ордосов (почему-то всегда Ордосов, независимо от того, за какой Дом играть), 3) появляется трайк Ордосов (обычный трайк, не рейдер), 4) появляется грузолет Ордосов, 5) появляется нейтральный грузолет, 6) появляется нейтральный орнитоптер. Нейтральные юниты черного цвета, они просто летают по карте и ничего не делают. Скриншот:


Вот еще потенциально полезная вещь:
http://nyerguds.arsaneus-design.com/dune/segra/Dune2_db_segra_v002.rar
Это база данных IDA по DUNE2.EXE для PC-версии, составлення человеком по имени Segra. В свое время он очень подробно проанализировал код Dune 2, там наверняка найдется полезная информация.
« Последнее редактирование: 10 Август 2010, 18:20:16 от MrFlibble »

Оффлайн MrFlibble

  • Пользователь
  • Сообщений: 23
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1159 : 11 Август 2010, 03:14:16 »
Может, еще пригодится вот эта ссылка:

OpenDUNE Developer's Blog

Здесь описаны разные интересности из работы PC-версии игры, может, это поможет опознать какие-нибудь куски сеговского кода?
« Последнее редактирование: 11 Август 2010, 03:33:36 от MrFlibble »

Оффлайн Titanishu

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1160 : 12 Август 2010, 10:21:04 »
Извините,а где находится информация о типе стрельбы юнита? В смысле 1 или 2 патрона, скорость стрельбы... В wsa файле она? Или где-то еще? Просто глядя на сэма...
И еще такие вещи как самоуничтожение девастатора и возможность давить пехоту  :D
« Последнее редактирование: 12 Август 2010, 12:11:00 от Titanishu »

Оффлайн ALEX_230_VOLT

  • Модератор
  • Сообщений: 7645
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1161 : 16 Август 2010, 00:56:43 »
Ti_, вау! давно я сюда не заглядывал, но прогресс впечатляет  ;) завтра сыграю в твой новый sonicblast
а что касательно редактора карт? он закончен?

Оффлайн topos84

  • Emu-Land Team
  • Сообщений: 2762
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1162 : 16 Август 2010, 01:20:58 »
Цитата: ALEX_230_VOLT
а что касательно редактора карт? он закончен?
Ti_ над редактором не работает, а Сегаман служит.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1163 : 16 Август 2010, 11:13:36 »
Отслужу, новый сделаю, а пока и этот вполне функционален

Оффлайн Roket

  • Пользователь
  • Сообщений: 3324
  • Пол: Мужской
  • Злой Котэ
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1164 : 16 Август 2010, 12:02:25 »
Ti_, было бы красиво и более нормально если бы бот атаковал пушки только в том случае, если они ему мешают, то есть атакуют юнита и он переключается на пушку.

Оффлайн topos84

  • Emu-Land Team
  • Сообщений: 2762
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1165 : 16 Август 2010, 13:44:52 »
Пора создавать простенький редактор юнитов. Прогеры, вы где? Помогите, чем можете.  :blush:

Оффлайн -DeN-

  • Пользователь
  • Сообщений: 105
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1166 : 16 Август 2010, 14:02:43 »
играл ещё не в пофиксённую миссию, так там действительно и делать ничё не надо фримены сами всех выносили по чистую, правда не понять зачем ему столько харвестеров, я сразу всех их убивал только один оставляя, а то весь спайс выкачивает гад. Да и ещё немного дуратская у него база, очень удивился ракетные пушки чёт через чур сильно далеко стреляют, даже своих не надо ракеты летят дальше моей базы. Не понятно зачем передвежная строительная станция нужна, так прямо рядом с ними строишь и они тебя защищают. Ещё смотрю вроди черви изменились? Да изза большого колличества строений бота, мне быстро наступает ограничение на строительство зданий. Дом императора очень близко находится ко мне и к моим союзникам, быстро в итоге нападают. Ну а так всё нормально. Всё таки для такой миссии карту при возможности думаю нужно сделать другою. А ещё вопрос размер карты этот максимален, его нельзя увеличить?

Оффлайн Titanishu

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1167 : 16 Август 2010, 19:33:25 »
Пора создавать простенький редактор юнитов. Прогеры, вы где? Помогите, чем можете.  :blush:
Уже был совсем недавно, выкладывали UnitEditor.7z
Так как изменить частоту стрельбы и (не)возможность давить пехоту?

Оффлайн -DeN-

  • Пользователь
  • Сообщений: 105
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1168 : 16 Август 2010, 20:01:53 »
вот этот фикс мне больше понравился, реально теперь нужно самому всех выносить ибо на союзника надеятся теперь не приходится, да значительно стало сложнее, только 2 руки смерти подряд это как то жестко, обязательно попадают в цель и сносят строительную площадку у бота и у меня. Червя конечно не в тему както поставил :lol:он сразу поедает союзнические харвестеры. Ракеты от чего спушек летают так далеко кажись понял, то когда орнитроптеров они долбят стреляют дальше чем обычно, так и в обычной дюне помоему было.Вот чё не понял зачем доступно два танкостроительных завода, один дешевле и брони меньше, другой дороже брони больше, они ведь одинаковые юниты производят :? я лично отличий не заметил в этом. Чё вот интересно, союзнику харвестов ты убрал, а противникам помоему добавил или они сами строят? очень интересно смотелись император, харконы и ордосы в союзе прям таи друг друга оберегают. Миссия не легкая противник мощный пушки мне раз за разом выносили стоило немного прозивать. На мой взгляд самые таки дающие отпор это ордосы, императора развалил коекак вместе с фрименами и харконов тоже, но ордосов уничтожать так и не хватило терпения. Вообщем круто, надеюсь в будующем ты заменишь все миссии :)

Оффлайн ALEX_230_VOLT

  • Модератор
  • Сообщений: 7645
  • Пол: Мужской
    • Просмотр профиля
[SMD] хакинг Dune: The Battle for Arrakis
« Ответ #1169 : 17 Август 2010, 00:33:20 »
Ti_, а вот эти правила для самолётов и бесконечного спайса выставляются отдельно под каждую карту отдельно или под всю игру сразу? Просто на счёт спайса я не очень согласен, т.к. сам довольно часто (правда при игре в ПК версию) попадал в ситуацию когда спайса тупо на карте на оставалось и мне и врагу приходилось туго и я пёр в финальную атаку, что было весьма интересно. В этом присутсвовал своеобразный вызов и если это убрать то будет упрощение. Да и самолёт тоже должен злым быть

кста, сегодня заценил serious sam mod - это конечно нечто  :D Такие месивные атаки в начале карты  :wow:
Кста, может стоит сделать такого юнита вместа дворцовского саботёра у Ордосов? А то ИМХО Саботёр сильно проигрывает в полезности Фрименам и Руке Смерти. Правда надо уменьшить его здоровье и снизить радиус стрельбы и будет достойный дворцовый юнит. Ну или сделать чтобы Саботёр мог захватывать/уничтожать любое здание с первого раза

вторую версию Фрименов союзников не мог заценить, т.к. форум не работал :(

Добавлено позже:
кста, а почему существует аж два завода техники с разной ценой энергопотреблением и прочностью, но одинаковым выбором юнитов??  o_0

Добавлено позже:
и зачем даётся MCV на базе Фрименов?
« Последнее редактирование: 17 Август 2010, 00:44:05 от ALEX_230_VOLT »