Четверг, 19.10.2017, 21:46
Вы вошли как Гость | Группа "Гости" | RSS

.
 
 
Главная Регистрация Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Lipetsk, Segaman 
Форум » Elektropage.ru » Dune: The Battle for Arrakis [smd] » buildings
buildings
Nemesis_cДата: Среда, 03.08.2011, 05:07 | Сообщение # 1


 
Сообщений: 1127
Статус: Offline
 

Справа от комментариев адреса кода в каких запрашивается значение.

Code
ROM:0006B33E                 dc.w 6                  ; unkn when build by mcv $10C24 $10C40
ROM:0006B340                 dc.w 0
ROM:0006B342                 dc.w 0
ROM:0006B344 WINDTRAP:       dc.w $FA                ; DATA XREF: ROM:0006B978o
ROM:0006B346                 dc.l asc_BC12           ; "Windtrap"
ROM:0006B34A                 dc.w $FB                ; not used
ROM:0006B34C                 dc.l asc_BC1B           ; "windtrap.wsa"
ROM:0006B350                 dc.w $80                ; unkn when build/selected $E650 $FACA $F1AC $29652
ROM:0006B352                 dc.w $40                ; unkn when explode $D540
ROM:0006B354                 dc.w 400                ; armor = 400 $27784 $E632 $E638 $104F6 $10618 $10628
ROM:0006B354                    ;  $EB30 $EB7E $EBA0 $10500 $2950A $C076 $C0D6 $C50A
ROM:0006B356                 dc.w 2                  ; view sight = 2 $108C0 $D058
ROM:0006B358                 dc.w $49                ; icon type id $2967A
ROM:0006B35A                 dc.w 300                ; cost = 300 $27778  $C1F6
ROM:0006B35C                 dc.w $C                 ; build time $FE2E $296FE $C1FA
ROM:0006B35E                 dc.w 1                  ; level from allowed $FEE0
ROM:0006B360                 dc.l 0                  ; required build for allowed $FEE4
ROM:0006B364                 dc.b 6                  ; menu priority $28E74
ROM:0006B365                 dc.b 0                  ; unkn menu allowed? $FF74
ROM:0006B366                 dc.w 0                  ; unkn/not used
ROM:0006B368                 dc.w 0                  ; unkn/not used
ROM:0006B36A                 dc.w 0                  ; unkn/not used
ROM:0006B36C                 dc.w 0                  ; unkn/not used
ROM:0006B36E                 dc.w 0                  ; unkn/not used
ROM:0006B370                 dc.w $A                 ; unkn/not used
ROM:0006B372                 dc.w 0                  ; unkn time-based $64 r-turret $4B turret  $106F2
ROM:0006B374                 dc.w 300                ; unkn (cost2?) $106F6
ROM:0006B376                 dc.b $3F                ; 3D=hark+ord, 3E=atr+ord, 3F=all, REQ for barracks $FF6C
ROM:0006B377                 dc.b 0                  ; unkn/not used
ROM:0006B378                 dc.l 0                  ; ref=$10000/repair=$3FF80  $5606
ROM:0006B37C                 dc.w 0                  ; add to spice max $104E4
ROM:0006B37E                 dc.w -100               ; energy drain -100 (+100 give) $104EC $10546 $10532 $2777C
ROM:0006B380                 dc.w 3                  ; size = 2x2  $27788 $DB5A $285FA $F11C $F138 $F31E
ROM:0006B382                 dc.w $13                ; graphics ID $ED68
ROM:0006B384                 dc.l word_6AF90         ; unkn not used +
ROM:0006B388                 dc.l word_6AF90
ROM:0006B38C                 dc.l word_6AF90
ROM:0006B390                 dc.w $FFFF
ROM:0006B392                 dc.w $FFFF
ROM:0006B394                 dc.w $FFFF
ROM:0006B396                 dc.w $FFFF
ROM:0006B398                 dc.w $FFFF
ROM:0006B39A                 dc.w $FFFF
ROM:0006B39C                 dc.w $FFFF
ROM:0006B39E                 dc.w $FFFF
ROM:0006B3A0                 dc.w $FFFF
ROM:0006B3A2                 dc.w $FFFF
ROM:0006B3A4                 dc.w 0
ROM:0006B3A6                 dc.w 0
ROM:0006B3A8                 dc.w 0
ROM:0006B3AA BARRACKS:       dc.w $FC                ; DATA XREF: ROM:0006B97C


Адреса на здания находятся тут:

Code
ROM:0006B954 builds_types:   dc.l SLAB               ; DATA XREF: sub_556E+1Ao
ROM:0006B954                    ; sub_A938+2C2o ...
ROM:0006B958                 dc.l SLABx4
ROM:0006B95C                 dc.l PALACE
ROM:0006B960                 dc.l LIGHT_FACTORY
ROM:0006B964 Heavy_factory:  dc.l HEAVY_FACTORY      ; DATA XREF: Buildings_work+25Cr
ROM:0006B968                 dc.l HI_TECH
ROM:0006B96C                 dc.l IX
ROM:0006B970 Wor:            dc.l WOR                ; DATA XREF: Buildings_work+298r
ROM:0006B974 Const_Yard:     dc.l CONST_YARD         ; DATA XREF: sub_45F8E+AEr
ROM:0006B978                 dc.l WINDTRAP
ROM:0006B97C                 dc.l BARRACKS
ROM:0006B980                 dc.l STARPORT
ROM:0006B984 Refinery:       dc.l REFINERY           ; DATA XREF: sub_235E2+18r
ROM:0006B988                 dc.l REPAIR
ROM:0006B98C Wall:           dc.l WALL               ; DATA XREF: sub_A938+320r
ROM:0006B98C                    ; sub_A938+342r
ROM:0006B990                 dc.l TURRET
ROM:0006B994 R_turret:       dc.l R_TURRET           ; DATA XREF: sub_10BA6+BAr
ROM:0006B998 Spice_silo:     dc.l SPICE_SILO         ; DATA XREF: sub_235E2+40r
ROM:0006B99C                 dc.l OUTPOST


Тут на юниты:

Code
ROM:0006C5BC unit_types:     dc.l CARRYALL           ; DATA XREF: sub_556E+2Co
ROM:0006C5BC                    ; sub_5628+18o ...
ROM:0006C5C0                 dc.l THOPTER
ROM:0006C5C4                 dc.l INFANTRY
ROM:0006C5C8 Troopers:       dc.l TROOPERS           ; DATA XREF: sub_4378C+120r
ROM:0006C5CC Soldier:        dc.l SOLDIER            ; DATA XREF: sub_D4CC+4Eo
ROM:0006C5D0 Trooper:        dc.l TROOPER            ; DATA XREF: sub_4378C+140r
ROM:0006C5D4                 dc.l SABOTEUR
ROM:0006C5D8 Launcher:       dc.l LAUNCHER           ; DATA XREF: sub_CDD4+1AAr
ROM:0006C5DC                 dc.l DEVIATOR
ROM:0006C5E0 Tank:           dc.l TANK               ; DATA XREF: sub_CDD4+1BAr
ROM:0006C5E4                 dc.l HEAVY_TANK
ROM:0006C5E8                 dc.l DEVASTATOR
ROM:0006C5EC                 dc.l SONIC_TANK
ROM:0006C5F0                 dc.l TRIKE
ROM:0006C5F4                 dc.l RAIDER_TRIKE
ROM:0006C5F8                 dc.l QUAD
ROM:0006C5FC                 dc.l HARVESTER
ROM:0006C600                 dc.l MCV
ROM:0006C604                 dc.l DEATH_HAND
ROM:0006C608                 dc.l ROCKET
ROM:0006C60C                 dc.l AROCKET
ROM:0006C610                 dc.l GROCKET
ROM:0006C614                 dc.l MINIROCKET
ROM:0006C618                 dc.l BULLET
ROM:0006C61C                 dc.l SONIC_BLAST
ROM:0006C620                 dc.l SANDWORM
ROM:0006C624                 dc.l FRIGATE


Супер-оружие (фремены, саботер, ракета) - 2 вызова (от игрока и AI)

Code
ROM:00022CC8 SUPERWEAPON:                            ; CODE XREF: Buildings_work+182p
ROM:00022CC8                    ; sub_27B50+350p
ROM:00022CC8                 movem.l d3-d6/a2-a4,-(sp)

.......

....
Code
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 loc_22EBA:                    ; CODE XREF: SUPERWEAPON+336j
ROM:00022EBA                 addq.w  #1,(word_FFC148).l
ROM:00022EC0                 jsr     (sub_439A).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     (sub_4382).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:00023724 house_func_0_1

думаю если его поменять мб на ff, 0 и 1 можно

Code
ROM:00023754 houses_inf:                             ; DATA XREF: house_func_0_1+12r
ROM:00023754                    ; house_func_0_1+16r
ROM:00023754                 dc.b $FF                ; hark
ROM:00023755                 dc.b 0                  ; atr
ROM:00023756                 dc.b $FF                ; ord
ROM:00023757                 dc.b 1                  ; frem
ROM:00023758                 dc.b $FF                ; sard
ROM:00023759                 dc.b $FF


.......

Code
ROM:00095CD8 fremens_utype:  dc.w 3                  ; DATA XREF: SUPERWEAPON+1E8o
ROM:00095CD8                    ; ROM:0008F1E8o ...
ROM:00095CDA                 dc.w 5
ROM:00095CDC                 dc.w 3
ROM:00095CDE                 dc.w 3
ROM:00095CE0 fremens_quanit: dc.b 5                  ; DATA XREF: SUPERWEAPON+1DAo
ROM:00095CE1                 dc.b 5
ROM:00095CE2                 dc.b 4
ROM:00095CE3                 dc.b 4
ROM:00095CE4                 dc.b 3
ROM:00095CE5                 dc.b 2
ROM:00095CE6                 dc.b 1
ROM:00095CE7                 dc.b 0
ROM:00095CE8                 dc.b 0
ROM:00095CE9                 dc.b 0
ROM:00095CEA                 dc.b 0
ROM:00095CEB                 dc.b 0
ROM:00095CEC                 dc.b 0
ROM:00095CED                 dc.b 0
ROM:00095CEE                 dc.b 0
ROM:00095CEF                 dc.b 0


За два выстрела отвечает один из битовых флагов (0 или 1). Для его установки надо взять число (2байта) с адреса $38 и на калькулятор(вид->инженерный, точка на hex) провести операцию Or с числом $400.
Пример: у tank там $8064, $8064 Or $400 получится $8464. (это не одно и тоже что сложение, но в данном случае совпадает просто)
Три выстрела игрой не предусмотрено, и стандартными методами сделать нельзя.

формат юнитов:
Код:

Code
10 = shield
14 = icon
16 = price
34 = flag turn of other clones
3A - fog visibility range
3e = soldier no comicze flag
42 = speed
46 = sprite
50 = attack range
54 = power
58 = weapon


Нашол адрес, в который записываются ID строений, юнитов и т.п. для показа
в меню строений, таких как Const.Yard, Vehicle и т.д.
BF91-BF9F
C63C - адрес, куда генерится список доступных строений
Узнал ещё 2 вещи.
1. TEAM заставляет строения поступать так как в них описано. например строить танки в заводе или туперы.
2. если держать C во время взрыва, то тряски не будет.
 
Форум » Elektropage.ru » Dune: The Battle for Arrakis [smd] » buildings
Страница 1 из 11
Поиск:


Select language:
English
French
German
Portuguese
Chinese
Nemesis_c, r57shell, Smoke, Lipetsk, GoodBye (aka vfiuchcikicshuusrch) & Segaman © 2017
Хостинг от uCoz