[Часть 2]. Теперь разберем полностью формат карт.14) Копируем каждую карту в отдельный файл. как и предыдущ. (это понадобится нам для быстроого сравнения)
15) открываем PC-шный конфиг карт дюны ( я взял из dune2themaker) -выкладывал уже.
SNENO022.INI:
[BASIC]
LosePicture=LOSTBILD.WSA
WinPicture=WIN2.WSA
BriefPicture=SARDUKAR.WSA
TimeOut=0
MapScale=0
CursorPos=3422
TacticalPos=3160
LoseFlags=1
WinFlags=3
16) сравнием наши дампы карт. (открываем в винхексе сразу все). смотрим:
все карты:
00 00 00 0E LOSTBILD.WSA 00 00 или
00 00 00 0E LOSTVEHC.WSA 00 00
00 01 00 0A WIN1.WSA 00 57 или
00 01 00 0A WIN2.WSA 00 57
00 02 00 0C HARVEST.WSA 00 00 или
00 02 00 0E HEADQRTS.WSA 00 00 или
00 02 00 0A QUAD.WSA 00 57
00 02 00 0A LTANK.WSA 00 00
00 02 00 0C REPAIR.WSA 00 41
и др.
видимо:
00 00 = LosePicture , 00 0E - длина строки предполож.
00 01 = WinPicture
00 02 = BriefPicture
все карты:
00 03 00 00
00 03 = Timeout
(timeout= 00 00) ; предполож. таймер.
первые две карты:
00 04 00 01,
остальные
00 04 00 00
00 04 = MapScale. ; увелич. (для первых 2)
(mapscale = 00 00 или 00 01)
далее:
00 05 03 F3
00 06 03 F3
00 05 = CursorPos ; позиции курсора и экрана
00 06 = TacticalPos
далее:
00 07 00 04
00 07 = LoseFlags? ; флаги пораж.
далее:
00 08 00 06
00 08 = WinFlags? ; флаги победы
SNENO022.INI:
[MAP]
Bloom=983,1762,2015,3343,3383
Field=83,130,156,177,231,381,567,1080
Seed=392
миссия 1:
01 53 00 01 ?
03 51 03 E8 03 43 03 ED 03 42 00 48 миссия 2:
01 53 00 02 ?
01 42 00 03 02 42 03 CF 04 1C 03 51 миссия 3:
01 53 00 03 ?
02 51 00 00 02 43 01 3c 02 42 00 43миссия 4:
01 42 00 02 ? 09 03 0D 77 01 53 00 04 02 51 00 00? что-то связанное с картой(землей).01 53 = карта земли , 00 01 = ее номер.
далее должны идти дома:
SNENO022.INI:
[Harkonnen]
Quota=0
Credits=1500
Brain=CPU
MaxUnit=20
(вспоминаем что на 1ур мы атреидеc и нам дается 1000 кредитс)
1000>HEX>03E8
03 51 03 E8 = 1000cr? 03 51 = atreides quota ; набрать кредит
03 43 03 ED = 990cr? 03 43 = atreides credits ; старт кредиты
03 42 00 48 ; ? atreides brain = player ; мозг
03 4D 00 19 ; atreides max units = $19 ; юнит лимит
(далее пойдет комп. ордос)
04 51 00 00 = 04 51 = ordos quota (0)
04 43 00 00 04 43 = ordos credits (0)
04 42 00 43 ; ordos brain = cpu
04 4D 00 10 ; ordos max units = $10 (16)
вычеркиваем пред.строки.(оказалось что там только номер земли, а ост. относится к дому)
далее в SNENO22.INI :
[CHOAM]
Trike=5
Quad=5
Tank=6
Launcher=5
Siege Tank=6
Harvester=4
MCV=2
Thopter=5
Carryall=2
видимо старпорт. (на 1-ой миссии его нет). как найдем юниты мы его поставим.
17) в теме уже описывались юниты и здания.
я знаю что в конце идут здания , перед ними юниты,
а вот между началом и ними и находятся старпорт и десант.
поэтому я вначале отделю юнитов и зданий.
(листаю тему).
Добавлено позже:юниты: 08 01 00 02 00 04 01 00 00 41 00 80 00 0B
08 02 и т.д.
(0801 = UnitId)
здания: у нас оно одно.
09 49 00 13 00 01 00 08 01 00 04 С8
18) отбрасываем юниты и здания (это уже много раз тут описывалось поэтому не буду про них писать),
перед ними остаются строки:
06 0D 00 05
06 0F 00 05
06 09 00 06
06 07 00 05
06 0A 00 06
06 10 00 04
06 11 00 02
06 01 00 05
десанта на 1уровне нет, значит это либо старпорт либо что-то еще. в любом случае если это не старпорт мы сможем найти его на других уровнях.
19) откроем наш файл и сменим тип здания на старпорт...
Добавлено позже:09 49 00 13 00 01 00 08 01 00 04 С8,
где 00 08 - тип здания.
меняем на 00 0B (стартпорт)
20)
06 0D 00 05
06 0F 00 05
судя по SCENO22.INO если это десант , то 0D - тип юнита. 00 05 - кол-во стока.
меняем тип и кол-во юнита:
06 0A 00 09 (соник-танк 9шт)
06 0B 00 09 (девастатор 9шт)
результат:
21)
Добавлено позже:остался десант:
листаем тему и на 13(!) старнице находим . о чудо!
0A05 0002 0006 0006 1111 - desant(ID), дом, юнит, unkn(base,home?), через сколько высадка.
, где ID от 01 до 0F (насколько я помню лимит в 15)
также в SCENO22.INI
[REINFORCEMENTS]
1=Sardaukar,Troopers,Enemybase,12+
2=Atreides,Siege Tank,Enemybase,12+
Заключение: мы полностью разобрали cfg карты. Можем прописать дома,условия,юниты,здания, десант,старпорт. Из того что не можем прописать - доступные строения/апгрейды. Видимо задается где-то ещё. Заключение2: сколько команд ассемблера нужно знать чтобы разобрать часть2: cfg карты?
правильно!
0 КОМАНД!