| Разработка и ромхакинг > Ромхакинг и программирование |
| [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 музыкой |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |