Разработка и ромхакинг > Ромхакинг и программирование
[SMD] хакинг Dune: The Battle for Arrakis
<< < (400/447) > >>
M3tro ™:
Dune AMC v0.1.8.3

Aвтор редактора: Ti_.
Reboot и корректирование: M3tro.

Изменения от v0.1.8.0 к v0.1.8.3:
181:

* Добавлены спрайты RocketQuad и Laser-Tank вместо букв 1C и 1D.
* Пронумерованы все чёрные блоки (удобно в случае их редактирования в игре, не путаясь, расставлять на карте).
* Блоки с графикой зданий ($D2—$12b), которые были чёрными, теперь тоже имеют вид зданий (чёрными блоками были Heavy Factory, iX, WoR).
* Добавлено воспроизведение музыки в редакторе (о нём написано в справке).
Dune II: The Building of A Dynasty ost
Westwood Logo.mid
Title (Choose Your House).mid
Dune 2 Intro.mid
Conquest Map.mid
Emperor`s Theme.mid
Ambient 01.mid
Ambient 02.mid

Ambient 09.mid
Ambient 10.mid
Ending Atreides.mid
Ending 0rdos.mid
Ending Harkonnen.mid
Credits.mid
 DuneTBoAD_ost.7z (34.73 КБ - загружено 149 раз.)

* Блоки, отвечающие за туман войны, отмечены таким значком, чтоб случайно их не стали использовать под свои нужны.
* Ещё несколько особых метатайлов: — $7C блок, который не использовался в оригинале, и ($16 и $19) пронумерованы для отличия. С остальными, думаю, разберётесь сами.182:

* Плюс ещё в архиве идут бонусом metatiles.bin и конфиги block_type.asm и шаблоны гор с этими метатайлами (все горы в папке /rocks).
* Подписан флаг поражения LoseFlag7 как Потеряны все здания и юниты союзника.
* Мелкие правки текста (очепятки, заглавные буквы и пр.).
* Чуток подправлены спрайты WoR, HoverTank, MCV, iX и Barracks.
* Сделал чтоб нормально переключались меню Y, F, G, H, N между собой.
* Новые спрайты для SonicTank и Deviator.
* Добавлено поведение ИИ Sabotage для юнитов (ставить рекомендуется пехотным юнитам в вашем хаке).183:

* Переключение юнитов в режиме редактирования Starporta теперь делается колёсиком мышки или PageUp/PageDown; yменьшать число закупок на ПKM, A или Left; yвеличивать — на ЛKM, D или Right.
* Новый спрайт для значка отображения потребляемой энергии.И спасибо Lord Taurus за спрайты с пронумерованными метатайлами.

Скачать
       DuneAMC183.7z     
Если кому нужен всё ещё 180й, то ссылка на него сохранилась.
Dune Unit Builds v1.6
Ti_:

--- Цитата: M3tro ™ от 11 Март 2017, 23:46:12 ---Если инклуд в r81b подправить для него, этот *.asm подойдёт ведь вместо *.bin?

--- Конец цитаты ---
да.
SeregaZ:

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

Добавлено позже:
Ti_, иконки все-таки перенес. по ним вот вопрос. метка bmenuunits_ico: в include.asm - в ней в качестве иконки для девастатора упоминается dc.l icons_devastat2, которая ведет в свою очередь к sprites_cfgs11.asm и icons_devastat2: incbin gfx\small_icons\devastat(veh).smd. однако чуть выше есть еще один девастатор: icons_devastat: incbin gfx\small_icons\devastat(3).smd. так то я помню что ты говорил про иконки, что их по сути две - одна на заводе, вторая в игре. однако если пользователь внесет изменения в icons_devastat2, то потом будет матерится и искать где он накосячил, когда в игре ему будет показывать icons_devastat. вот собственно вопрос в том, где упоминается этот самый icons_devastat? и видимо мне придется в случае с девастатором выводить два окна для редактирования иконок чтоль...

Добавлено позже:
нашлось в sprites_ptrs.asm:

--- Цитата ---dc.l icons_devastat   ; $57
      dc.l icon_spr_cfg|GPAL3
--- Конец цитаты ---
однако теперь откуда получить номер на $57(87)? то есть как в файле юнита получаем номер спрайта - так и для иконки для данного случая откуда получить этот номер?

Добавлено позже:

--- Цитата ---icons_blank1:
 incbin gfx\small_icons\lasertank.smd
icons_blank:
 incbin gfx\small_icons\lasertank.smd
--- Конец цитаты ---
запасы на случай новых юнитов?
Ti_:

--- Цитата: SeregaZ от 12 Март 2017, 09:26:35 ---откуда получить номер на $57(87)? то есть как в файле юнита получаем номер


Добавлено позже:запасы на случай новых юнитов?

--- Конец цитаты ---
1) номера иконок в файле юнита.

2) да, тоже шаблоны.
SeregaZ:
тьфу... опять все запутанно. я так понимаю логика должна быть такая:
1. вносить в массив метки из bmenuunits_ico в файле include.asm - там они идут по порядку, соответствующему порядку юнитов.
2. во второй массив вносить метки из файла юнита и последующем чтении sprites_ptrs.asm.
3. если метки не совпадают - делать вывод, что иконок для такого юнита по сути две штуки.

по второму случаю палитра видимо указана - GPAL3

--- Цитата ---dc.l icons_devastat   ; $57
dc.l icon_spr_cfg|GPAL3
--- Конец цитаты ---

а по первому случаю палитру брать из ico_fact_pal.asm?



тут неканоничное решение бы применить - отказаться от домовых палитр. типа чтоб девастатор был не красным - а нейтральным желтым как осадный танк какойнить. так-же и прочие иконки специальных домовых юнитов - девиаторов и так далее. тогда выверты с палитрой были бы не нужны.

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

--- Цитата ---; vram block D800-DD20
misc_spr1:
--- Конец цитаты ---
начиная с этой метки идет расчет номера тайла как:

--- Цитата ---rep_tile equ (repair_spr-misc_spr1)/32+base2
--- Конец цитаты ---
само base2 это equ $D800/32
мне получается нужно запилить метку misc_spr0 в самом начале файла, перед началом перечисления путей файлов (начиная от thopters_tiles: и до house_spheres:), но для расчета номера тайла так-же нужно будет некое значение base0. чтобы формула для той же топтерной анимации расчитывалась что-то типа:
thopters_tiles1 equ (thopters_tiles-misc_spr0)/32+base0
вот где взять это значение base0?

Добавлено позже:
да и это четкое указание меток base - меня тоже смущает:

--- Цитата ---base2   equ   $D800/32
base3   equ   $F980/32
base4   equ   $BD20/32
base   equ   $7340/32
--- Конец цитаты ---
ведь проблема то в чем - если пользователь решит поменять тому-же кваду размер 2х2 тайла на 3х3 скажем, увеличив размер юнита - то эти метки base - получается собьются и все поплывет.
Ti_:

--- Цитата: SeregaZ от 12 Март 2017, 13:00:50 ---да и это четкое указание меток base - меня тоже смущает:ведь проблема то в чем - если пользователь решит поменять тому-же кваду размер 2х2 тайла на 3х3 скажем, увеличив размер юнита - то эти метки base - получается собьются и все поплывет.

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


Добавлено позже:

--- Цитата: SeregaZ от 12 Март 2017, 13:00:50 ---другой момент для воссоздания конфигов там, где их пока нет - например червяк где жрет. файлы этой анимации находятся выше первоначального содержимого файла, то есть выше метки
--- Конец цитаты ---
можешь переместить ниже.

Добавлено позже:

--- Цитата: SeregaZ от 12 Март 2017, 13:00:50 ---вот где взять это значение base0?
--- Конец цитаты ---
5F5 * 20 = BEA0 ;  5FE *20 = BFC0; 5FF * 20 = BFE0.
из thopter_spr_cfg1

BEA0 для спрайтов thopter_spr2a.smd и thopter_spr2b.smd и thopter_spr2c.smd.
BFC0 для thopter_spr1a.smd/thopter_spr1b.smd/thopter_spr1c.smd
BFE0 для thopter_spr3a.smd/thopter_spr3b.smd/thopter_spr3c.smd

И, анимация эта в коде задана, всё равно по этим адресам будет идти.
SeregaZ:
не выходит  :(

это уже было

--- Код: ---units_spr_end:
; тут заканчивается оригинальный файл

блаблабла

worm_eat1_spr:
 incbin gfx\sprites_gfx\wormeat1.smd
worm_eat2_spr:
 incbin gfx\sprites_gfx\wormeat2.smd
worm_eat3_spr:
 incbin gfx\sprites_gfx\wormeat3.smd
worm_eat4_spr:
 incbin gfx\sprites_gfx\wormeat4.smd
worm_eat5_spr:
 incbin gfx\sprites_gfx\wormeat5.smd

--- Конец кода ---

в конце файла математики (sprites_cfgs2.asm) я добавляю:

--- Код: ---deviator_tile3 equ (deviatorspr3-units_spr)/32+base

assault_tile equ (assaultspr-units_spr)/32+base
ptrk_tile equ (ptrkspr-units_spr)/32+base

; моя отсебятина
; обед червяка
worm_eat_tile1 equ (worm_eat1_spr-units_spr)/32+base
worm_eat_tile2 equ (worm_eat2_spr-units_spr)/32+base
worm_eat_tile3 equ (worm_eat3_spr-units_spr)/32+base
worm_eat_tile4 equ (worm_eat4_spr-units_spr)/32+base
worm_eat_tile5 equ (worm_eat5_spr-units_spr)/32+base
--- Конец кода ---

в файле конфигов (sprites_cfgs3.asm) добавляю к обычному червяку червяка жрущего:

--- Код: ---; червяк спокойный или ходячий
worm_spr_cfg: dc.w 0, $20, $20, $FFF0, $F00, worm_tile, $FFF0
; червяк жрет.
wormeat_spr_cfg1:
dc.w 0, $20, $20, $FFF0, $F00, worm_eat_tile1, $FFF0
wormeat_spr_cfg2:
dc.w 0, $20, $20, $FFF0, $F00, worm_eat_tile2, $FFF0
wormeat_spr_cfg3:
dc.w 0, $20, $20, $FFF0, $F00, worm_eat_tile3, $FFF0
wormeat_spr_cfg4:
dc.w 0, $20, $20, $FFF0, $F00, worm_eat_tile4, $FFF0
wormeat_spr_cfg5:
dc.w 0, $20, $20, $FFF0, $F00, worm_eat_tile5, $FFF0
; оригинальный жрущий имел всего 1 конфиг для всех кадров
;wormeat_spr_cfg:
; dc.w 0, $20, $20, $FFF0, $F00, $6E9, $FFF0
--- Конец кода ---

а после в sprites_ptrs.asm нахожу червячные пункты:

--- Код: --- ; было
dc.l worm_eat1_spr|LOAD_GFX
dc.l wormeat_spr_cfg|WORME_UNIT_SPR
dc.l worm_eat2_spr|LOAD_GFX
dc.l wormeat_spr_cfg|WORME_UNIT_SPR
dc.l worm_eat3_spr|LOAD_GFX
dc.l wormeat_spr_cfg|WORME_UNIT_SPR
dc.l worm_eat4_spr|LOAD_GFX
dc.l wormeat_spr_cfg|WORME_UNIT_SPR
dc.l worm_eat5_spr|LOAD_GFX
dc.l wormeat_spr_cfg|WORME_UNIT_SPR

                ; стало
dc.l NO_LOAD_GFX
dc.l wormeat_spr_cfg1|WORME_UNIT_SPR
dc.l NO_LOAD_GFX
dc.l wormeat_spr_cfg2|WORME_UNIT_SPR
dc.l NO_LOAD_GFX
dc.l wormeat_spr_cfg3|WORME_UNIT_SPR
dc.l NO_LOAD_GFX
dc.l wormeat_spr_cfg4|WORME_UNIT_SPR
dc.l NO_LOAD_GFX
dc.l wormeat_spr_cfg5|WORME_UNIT_SPR
--- Конец кода ---

там какая-то рябь пиксельная пока жрет...
Ti_:
Так нельзя.
Точнее это бы работало, если бы ты сунул все эти спрайты до лейбла units_spr_end.  А это , 80 тайлов. Ну что ж, если удалишь пару-тройку других юнитов - влезет.


Добавлено позже:
так сделай:

--- Код: ---worm_eat_tile1 equ $6E9
worm_eat_tile2 equ $6E9
worm_eat_tile3 equ $6E9
worm_eat_tile4 equ $6E9
worm_eat_tile5 equ $6E9
--- Конец кода ---
и верни worm_eat1_spr|LOAD_GFX
SeregaZ:
да все уже... вся работа на смарку. в том то и суть была, чтоб в конфигах был четкий путь какой файл читать, какой формат тайлов в этом файле и какая палитра. если там будет стоять некое эфемерное $6E9, то нужный файл редактор не найдет, хоть и будет знать что формат такой-то, палитра такая-то... но самого файла то тютю. так что мне конфиг нужен был не ради конфига, а ради того, чтоб зная тип и номер спрайта - выходить на реальный файл графики, для чего и нужно было чтоб каждый кадр имел свой собственный конфиг с четким указанием пути до файла. редактор тогда мог бы всю эту инфу собирать и показывать сразу полную графику всего юнита. типа если это кериал - 0, 45, 90, а так-же сразу-же и случай когда кериал харвестер тащит. если это харвестер - то сразу показывать и его хвост. если это червяк - то показывать и кадры как он жрет... и рядом в окошке демонстрации - анимацию. если это кериал, то крутить вокруг своей оси как в GIFке, рядом чтоб крутился второй кериал с прицепленным харвестером. если червяк - то показывать анимацию как он жрет. если пехота - как ходит и умирает и может даже стреляет. и тому подобное по всем юнитам. главное что вносишь изменения в картинку - она сразу же отображается на анимированной картинке и ты налету видишь как все будет выглядеть в игре. сейчас же как - нарисовал что-то, собрал ром, запустил игру, дождался пока звезды пролетели, ввел код миссии где эта фигня производится, ввел код на бабло, построил цепочку заводов что требуется для этого юнита, построил юнита - и тут видишь что один пиксель справа лег коряво и надо поправить... весь процесс пошел по новой :) неудобно. поэтому я и хотел чтоб редактор это делал примерно как игра делает, чтоб сразу видеть результать не тыркая все эти действия. вот для этой цели и нужны были эти конфиги с путями. без путей смысла нет.
Ti_:

--- Цитата: SeregaZ от 12 Март 2017, 17:33:07 ---в том то и суть была, чтоб в конфигах был четкий путь какой файл читать

--- Конец цитаты ---
путь есть и это worm_eat1_spr|LOAD_GFX  :D
SeregaZ:
и тут наступает вторая проблема :) замысел того, чтобы конфиги всех анимаций и случаев для одного юнита были в одном месте - заключался в том, что изначально редактор будет знать, что если тип спрайта скажем 1 (сейчас пишу от фонаря) - то ожидать всего 3 спрайта и в sprites_ptrs.asm они типа идут друг за другом и мы знаем адрес первого, и мы знаем как повернуть\отзеркалить спрайт по конфигу для создания 0, 45 и 90 градусов. однако если это скажем тип 2 - то это скажем такие-же 3 спрайта, но к нему-же еще прилагается хвост - ну типа это был харвестер, я все еще от фонаря пишу - итого 6 кадров значит надо показать. первые три кадра я знаю где искать, ибо номер спрайта из файла юнита. но как я узнаю где искать его бонус - анимацию фарма спайса? в sprites_ptrs.asm они не идут рядом. поэтому я и хотел их выстроить в конфиге рядом 6 штук. первые 3 повороты - вторые 3 - анимация хвоста. хотя там не 3, а 8 по направлениям света из-за сдвига - хвост то на жопе, а не в центре блока. тоже самое жратва червя - главный спрайт, а он один - я найду по номеру спрайта из файла юнита. а вот как найти его анимацию жратвы? сколько там... 5 кадров? поэтому я и хотел - сначала конфиг червя в спокойствии, потом рядом с ним 5 кадров еды друг за другом. было бы понятно что когда тип спрайта - червь - то читать в сумме 6 спрайтов и показать пользователю. вот в этом и был замысел создать конфиги для каждого файла и расположить их рядом с основными спрайтами. хотя это тоже не совсем верно - вдруг пользователь возьмет и сделает 3 кадра анимации вместо 5. а моя система будет продолжать искать 5 конфигов... так что это тоже еще большой вопрос, но основной замысел был именно таким.
Ti_:

--- Цитата: SeregaZ от 12 Март 2017, 18:01:43 ---а вот как найти его анимацию жратвы?
--- Конец цитаты ---
также поинтеры читать на конфиги, например по sprite_num + 5.  Если |LOAD GFX , то поинтер на файл узнавать отсюда же, а не на основе номера тайла.

Добавлено позже:

--- Цитата: SeregaZ от 12 Март 2017, 18:01:43 ---в sprites_ptrs.asm они не идут рядом.
--- Конец цитаты ---
что значит не рядом?  Все поинтеры в hv_tail_s_prts: описывают положение хвоста. Если ты собираешься редактировать их, то значит надо давать правку для всех. Тогда какая разница в каком они порядке?

Добавлено позже:

--- Цитата: SeregaZ от 12 Март 2017, 18:01:43 --- вдруг пользователь возьмет и сделает 3 кадра анимации вместо 5. а моя система будет продолжать искать 5 конфигов... т

--- Конец цитаты ---
Во-первых не сделает, потому что это не настраивается.
Во-вторых, пользователь может занулить или вписать глючные цифры, или левые данные в конфиг для любого юнита и поинтера. На котором твой редактор может или сломаться, повиснуть или что угодно. Это совсем другой вопрос.
SeregaZ:
о... червяк обычный и червяковая анимация точно рядом. но зачем там +5 пустых строчек делать?

а с харвестером "не рядом" в смысле его 0, 45, 90 и сразу-же чтоб следом шел хвост. но там другое чот лежит. узнать где хвост я не смогу.

--- Цитата ---      dc.l NO_LOAD_GFX
      dc.l trike_spr_cfg5|STD_UNIT_SPR
      dc.l NO_LOAD_GFX
      dc.l harv_spr_cfg1|STD_UNIT_SPR
      dc.l NO_LOAD_GFX
      dc.l harv_spr_cfg2|STD_UNIT_SPR
      dc.l NO_LOAD_GFX
      dc.l harv_spr_cfg3|STD_UNIT_SPR
      dc.l NO_SPR
      dc.l NO_SPR_CFG
      dc.l NO_SPR
      dc.l NO_SPR_CFG
      dc.l NO_LOAD_GFX
      dc.l mcv_spr_cfg1|STD_UNIT_SPR
      dc.l NO_LOAD_GFX
--- Конец цитаты ---
Ti_:

--- Цитата: SeregaZ от 12 Март 2017, 18:44:18 ---узнать где хвост я не смогу.
--- Конец цитаты ---
тут один вариант, по фиксированному списку из hv_tail_s_prts , а не из sprites_off.

Добавлено позже:

--- Цитата: SeregaZ от 12 Март 2017, 18:44:18 ---но зачем там +5 пустых строчек делать?
--- Конец цитаты ---
Там не 5 пустых, а 4.  И делать их не надо, они были.
SeregaZ:
помница кому-то нравился марш из ред алерта.
Lord Taurus:

--- Цитата: SeregaZ от 14 Март 2017, 21:46:59 ---помница кому-то нравился марш из ред алерта.

--- Конец цитаты ---
Это не марш, а фигня из Японской Угрозы с тошнотворно высокой концентрацией клюквы.
Надо ценить истинный марш из Red Alert 1 и 2 - Hell March 1-2!)
M3tro ™:

--- Цитата: SeregaZ от 14 Март 2017, 21:46:59 ---помница кому-то нравился марш из ред алерта.

--- Конец цитаты ---
Нравился из Red Alert, a не из этого гэ.
А те, кому нравится из 1го и 2го RA марш, послушайте Atreides Ending.mid из DuneII: TBoAD ;).


--- Цитата: Lord Taurus от 29 Март 2017, 17:40:11 ---
--- Конец цитаты ---
Полностью скипидарен с оратором выше.
Razor:

Обновил Dune Razor Missions.

- добавлено 3 CDDA трека
- заменены некоторые звуки
- изменена графика Soldier для соответствия визуальной части игровому балансу
- исправлены некоторые миссии
- снижена сложность при выборе пункта Easy

http://razor-missions.16mb.com/russian.html
-RagmuL-:
Razor, можно прямую ссылку на скачивание??
Р.S: у меня сайт не грузит! =(
Razor:
http://razor-missions.16mb.com/content/dune_razor_missions_rus.bin русская версия
http://razor-missions.16mb.com/content/dune_razor_missions.bin английская версия
https://yadi.sk/d/OE5f8azyuUb5p версия с CDDA музыкой
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии