Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - MrFlibble

Страницы: [1]
1
Ого , спасибо! Так только напиши что значат последние 2 цифры в teams. (одна - кол-во участников группы?)
Первая цифра - это минимальное количество юнитов в группе, а вторая, соответственно, максимальное. Т.е. размер группы может варьироваться - в частности, думаю, это связано с ограниченными ресурсами ИИ игроков: я несколько раз наблюдал, как оставшиеся 2-3 юнита из группы отступали после неудачной атаки и затем присоединялись к новой группе, которую ИИ формировал неподалеку от своей базы.

Ну всё что я писал (черви, плитка и т.д.) - написаны с нуля на основе изученных данных (ну то есть сам червь задается по таймеру + рандом координата + создание юнита) - то есть на основе рабочего кода, если тебя это интересует (а не каких-либо обрезков) .
Я, в общем, спрашивал потому, что думал, может, раз какие-то фрагменты кода остались, то их можно было как-то реактивировать. Если бы это было так для сеговской версии, скорее всего, возможно было бы сделать и на ПК.

кстати homebase/enemybase вроде не используется вообще (можно засчет этого добавить десант)
Интересно. В PC-версии есть еще варианты места высадки North, South, East, West - десант высаживается в произвольной точке у верхнего/нижнего/правого/левого края карты соответственно - и еще Visible (в той точке карты, которая отображалась на главном экране игрока в том момент, когда десант "входил" на карту) и Air (вот про это не знаю, по какому принципу работает). В любом случае, ни один из перечисленных вариантов реально не используется в миссиях: везде Homebase относится только к подкреплениям игрока, а Enemybase - к вражескому десанту.


staging как я понимаю используется как временный:  в памяти при чтении мапы тип AI записывается в 2места - $C и $E.
Есть две функции - одна меняет AI в адресе $C. (уже писал move.w  d3,$C(a2)       ; write new team ai (N->S), (K->S), (G->S), (F,S - nochange)

Другая восстанавливает AI из $E в $C :
ROM:0002EBBA fix_team_AI:                            ; DATA XREF: ROM:000FED64o
ROM:0002EBBA                 move.l  a2,-(sp)
ROM:0002EBBC                 movea.l (team_adress).l,a2
ROM:0002EBC2                 move.w  $E(a2),d0       ; team ai
ROM:0002EBC6                 cmp.w   $C(a2),d0       ; team ai copy
ROM:0002EBCA                 beq.s   loc_2EBF6
ROM:0002EBCC                 move.w  $E(a2),$C(a2)   ; copy to team ai
ROM:0002EBD2                 pea     (teams_ram_fadr).l
ROM:0002EBD8                 pea     $1E(a2)
ROM:0002EBDC                 jsr     un_buil_team_af
ROM:0002EBE2                 addq.l  #8,sp
ROM:0002EBE4                 move.w  $E(a2),d0       ; team ai
ROM:0002EBE8                 move.w  d0,-(sp)
ROM:0002EBEA                 pea     $1E(a2)
ROM:0002EBEE                 jsr     EMC_adress_set
ROM:0002EBF4                 addq.l  #6,sp
ROM:0002EBF6
ROM:0002EBF6 loc_2EBF6:                              ; CODE XREF: fix_team_AI+10j
ROM:0002EBF6                 moveq   #0,d0
ROM:0002EBF8                 movea.l (sp)+,a2
ROM:0002EBFA                 rts
Это происходит во время игры.

Также при любой смене AI переназначается emc-адресс.


Здорово, спасибо за информацию :) Наверное, Staging отвечает за ту часть поведения юнитов в группе, когда они на какое-то время останавливаются и стоят на полпути к базе игрока - вроде как охраняют подступы к собственной базе или что-то вроде того (ведь ИИ должен использовать свои войска и в обороне, а не только при нападении). С проставленным в скриптах Staging группы так себя и вели: кучковались около своей базы и на полпути к ней, но не атаковали базу игрока.

2
Fremen allies test v0004 
+ Червь теперь ресается в случайном месте, и на всех картах. (начиная со 3-его левела).
+ игра не зависает больше, если юнитов за картой поставить (в редакторе по краям).

~ не чаще чем в 5минут, но может и 15мин. и более не ресаться.

А можно узнать, эта функция была сделана с нуля или на базе каких-то остатков из оригинального кода?

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

Также упоминали что есть 2типа команд (normal и kamikaze) - но в конфиге мап 5значений:

ROM:00016664                 lea     (NSFKG).l,a3    ; N, S, F, K, G  (N=Normal)
ROM:0001666A                 movea.w #5,a1           ; 5 types max
(ну конфиг разобранный я уже выкладывал)

footed, tracked, wheeled, +?
Два типа - Normal и Kamikaze - это те, которые реально прописаны в скриптах миссий на PC-версии. На самом деле там есть еще Staging и Flee, нигде реально не используемые (ИИ с такими командами при тестировании вел себя как-то странно). Вот список всего, что с этим связано, из PC DUNE2.EXE:
Foot Tracked Harvester Wheeled Winged Slither Normal Staging Flee Kamikaze Guard Attack Move Retreat Area Guard Harvest Return Stop Ambush Sabotage Die Hunt Deploy DestructСначала идут типы юнитов, потом типы групп (teams), а затем команды, которые могут выполнять юниты.

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

4
Может, еще пригодится вот эта ссылка:

OpenDUNE Developer's Blog

Здесь описаны разные интересности из работы PC-версии игры, может, это поможет опознать какие-нибудь куски сеговского кода?

5
вот ещё раз код чтобы не искать:

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, там наверняка найдется полезная информация.

6
У меня как раз была идея чтобы убить приоритеты эти, и рассчитывать по тупой формуле - атакуй того, кто ближе!.  Вот тогда и посыпется атака и оборона игроков, когда 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-версии, однако, дворец Атрейдесов вызывает группу обычной тяжелой пехоты, только принадлежащей фрименам. При этом в файлах игры есть иконки для одиночного фримена и группы фрименов, но используется только "групповая" иконка, да и то не у вызванных юнитов (у них обычные иконки тяжелых пехотинцев), а на кнопке вызова во дворце. Хотел спросить, а в сеговской версии фрименская пехота - это отдельные юниты (в коде), или же есть какой-то дополнительный модификатор, который делает тяжелым пехотинцам фрименов другие иконки и больше здоровья?

7
Сможешь выдать как можно больше инфы о работе писишной дюны? Про юниты, строения, дома, команды(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 об этом тоже говорил, но мы так и не догадались, зачем это нужно. Кто-то предположил, что это влияет на агрессивность юнитов, но неизвестно, верно это или нет.

8
Всем дружеский привет (еще раз) от моддеров PC-версии "Дюны 2"! :) Очень рад был увидеть, что исследование и моддинг сеговской версии идет полным ходом :thumbup:

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

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

9
в сеговской у компа десант всегда повторяется), а игроку только один раз приносят.
Интересно! Впрочем, я так и подумал :D

Вот еще какой вопрос хотел задать: в PC-версии были задуманы атакующие группы юнитов для ИИ, однако из-за ошибки в скриптах работали они только для пехоты, а легкую и тяжелую технику ИИ слал по одному на базу игрока по мере производства (как раз работала команда Hunt). В сеговской версии такие скрипты есть?

10
тебя что интересует то?
Я подумал, может, информация пригодится :)

ну и еще вопрос если строки(адреса)  0-10 - самолеты, то строки 10-24 что такое? резерв для самолетов или десант? или черви где тут.
0-10: воздушные юниты
11: фрегат
12-15: снаряды
16-17: черви
18-19: (не используется)
20-21: диверсанты
(версия 1.0) 16-18: диверсанты
(версия 1.0) 19-21: черви
22-101: наземные юниты

Еще меня интересует повторяющееся десантирование (в PC-версии оно без исправления вообще не работает). По-моему, в сеговской версии оно используется чаще (в большем количестве миссий и с меньшими интервалами).

а в smd нет ее) но только червя 2шт если пихнуть в десант, 1) на землю уже нельзя подставить червей.
То есть индексы для высаживаемых юнитов резервируются в начале миссии?

11
лимит юнитов в дюне (общий - 77), то есть без глюков расширяем всего на 11,
но тут есть одно но - самолетов то 11 и еще 2 червя (а они входят в общий), так вот от червей и самолетов ничего не пропадает.
поэтому получается 87+11+2=100 юнитов.  , то еть на 23юнита больше.


пока вот такое в планах ещё:
сделать червей > 2
самолетов больше > 11
десант > 15
диверсант >1 ?
В PC-версии лимиты такие:
воздушные юниты - 11
наземные юниты - 80
диверсанты - 2 (3 в версии 1.0)
черви - 2 (3 в версии 1.0)
фрегат - 1

Ограничение количества юнитов достигается в PC-версии следующим образом: каждому юниту на карте приписан определенный индекс. Есть списки допустимых индексов для разных типов юнитов: например, воздушные юниты используют индексы от 0 до 10, наземные - от 22 до 101 и т.д. Не знаю, можно ли расширить списки, т.к. "приписка" к списку индексов определяет и некоторые свойства самого юнита (например, если наземный юнит поместить в список воздушных, его уже нельзя будет выделять мышью и отдавать приказы).

так что будет что придумать) особенно если с десантом получится) например десант из 10червей на 20-ой минуте )))
С десантом червей в PC-версии есть такая проблема (он используется на некоторых картах в модификации Super Dune 2): черви высаживаются, но никого не атакуют. Это происходит потому, что у червей не прописана команда по умолчанию (для большинства юнитов по умолчанию стоит команда Hunt: юниты компьютера, если не имеют других приказов, отправляются атаковать произвольно выбранную вражескую цель).

12
На арене The Portal не отображаются тени бойцов. Также тени иногда не отображаются после фразы FINISH HIM/HER! на арене The Bridge (по-моему, это зависит либо от того, за каких именно бойцов играешь, либо от каких-то других факторов, которые мне определить не удалось).

Иногда закадровый голос не договаривает фразы. Один раз вместо Kintaro wins. Flawless vicotry! прозвучало только Kintaro (на арене Kahn's Cave).

На арене The Bell Tower отсутствует луна на заднем плане.

Еще заметил, что даже при включенном режиме UMK3 Mode (или при установке параметра New Hits Disabled) компьютерные противники продолжают использовать новые добивания, а также сохранаются новые комбо. Может быть, я чего-то не понимаю (долгое время не следил за разработкой UMKT), но разве они не должны быть отключены в этом режиме?

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

Еще такая мысль: что, если ассоциировать колонки различной сложности с разными играми трилогии? Например, в колонке Novice воспроизвести сражения из первой части (битва со всеми персонажами MK1, Mirror Match, два Endurance, Goro, Shang Tsung MK1, где-нибудь посередине Рептилию), в колонке Warrior - из второй и т.п.? А в последней колонке делать по максимум бойцов из всех частей. Как Вам такая идея?

13
Прошу прощения, если пишу не в тему, но, может быть, разработчики хака знают, как извлечь из рома Дюны 2 звуки (не посредством звукозаписи через эмулятор)? Мне бы хотелось извлечь фразу "Dune - The Battle For Arrakis", которая звучит сразу после заставки (по-моему, ее нет в меню тестирования звуков).

14
рас данная работа для русскоязычных людей, нет ли в твоих планах ..э, руссифицировать её?
А что там особенно русифицировать? Заменить речь? Но по-моему, все эти Fight! и <имя-бойца> wins составляют важную часть атмосферы игры...

Впрочем, можно перевести текст биографий и концовок, но так уж ли это необходимо?

15
Мне кажется, что твоя работа просто жизненно необходима разместиться рядом с Кабалскими работами. Вы оба - молодцы. :)
Согласен. Почему бы и нет? Здоровая конкуренция опять же ;) Дух свободного творчества.

16
Насколько мне известно, ролики из C&C: Retaliation на PC портировал человек по имени Nyerguds. Скачать можно здесь.

17
А что, с указанной ссылки не качается? На всякий случай привожу конкретные ссылки на файлы: версия для одного игрока, версия для двух игроков (правой кнопкой на ссылку и сохранить объект как).

18
Миссия называется Resurrection IV, это эксклюзивно сделанный для версии N64 сценарий, доступ к которому открывается после прохождения всех остальных кампаний, включая бонусную миссию Dark Origin из Brood War, без кодов. В одном из интервью Крис Метцен признал содержание этой миссии частью канона. Подробнее о Resurrection IV можно прочесть здесь: http://starcraft.wikia.com/wiki/Resurrection_IV.

На самом деле, уже сделано несколько "любительских" (впрочем, на вполне профессиональном уровне) вариантов этой миссии для PC-версии (самый лучший и наиболее точный можно скачать здесь: http://www.sclegacy.com/content/starcraft-encyclopedia-4/bonus-maps-29/), однако мне было интересно узнать, можно ли извлечь оригинал из рома. Например, эксклюзивные дополнительные миссии, сделанные для Command & Conquer на PlayStation, были извлечены и конвертированы в формат PC-версии, и я хотел узнать, осуществимо ли нечто подобное для Starcraft64.

19
Можно ли извлечь из рома Starcraft64 карты миссий и если да, то как это сделать? Я понимаю, что проблема довольно специфическая, но меня интересует извлечение одной миссии, которая есть только в версии Starcraft'a на N64.

20
Нашел еще недоработки:
- в биографии Smoke изображение Sektor'a, а текст Cyrax'a;
- у изображений Motaro и Johnny Cage'a отсутствуют фрагменты в правом нижнем углу;
- во время мерцающего эффекта снаряда Noob Saibot'a у некоторых персонажей сквозь мерцание проглядывают фрагменты их спрайтов (см. скриншоты).

Также у Goro и Kintaro отсутствуют биографии. Официальные их биографии из МКТ здесь.

21
Мне кажется, что иконки персонажей из МК 1 и 2 выбглядят немного блекло. Как я понимаю, это результат "перегонки" их в другую палитру, но надеюсь, что все же их можно будет сделать поярче...

Да, еще биографии боссов почти всех очень короткие. Вот официальные биографии из МКТ:

Goro
Goro, a 2000 year old half human dragon, remains undefeated for the past 500 years. He won the title of Grand Champion by defeating Kung Lao, a Shaolin fighting monk. It was during this period that the tournament became corrupted as it fell into the hands of Shang Tsung.
(в сущности, это то же самое, что и в МК 1 и есть сейчас в UMKT, но без Goro lives...)

Kintaro
With Goro missing, Kintaro steps up to take his place as Supreme Ruler of Shao Kahn's armies. Stronger and more agile than his predecessor, he is enraged by Goro's defeat. Kintaro vows to take revenge on the Earth warriors responsible.

Motaro
In the realm of the Outworld, Motaro's race of Centaurians has long since come into conflict with the Shokan. When Shao Kahn formed special extermination squads to eliminate the chosen warriors of Earth, Motaro was appointed to head this elite group of savage warriors.

Shao Kahn
Long ago, Shao Kahn rose to power in the Outworld, usurping the realm from Kitana's parents and taking Queen Sindel for his bride. Then she died. Now, centuries later, Sindel is reborn. And since Shang Tsung failed to win the Earth Realm through Mortal Kombat I and II, her rebirth is the means by which Kahn will finally seize the planet forever unless...

22
На двух аренах замечено отсутствие теней у бойцов - не знаю, должно быть так или нет? (прилагаю скрины). Также фраза "<имя персонажа> wins" не всегда звучит полностью или же перекрывается фразами "flawless victory" и/или "<тип добивания>-ality".

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

Страницы: [1]