Разработка и ромхакинг > Ромхакинг и программирование
[SMD] хакинг Dune: The Battle for Arrakis
<< < (410/447) > >>
SeregaZ:
все. тупик. я не вижу в голове как сделать добавление конфигов :)

теория как это все работает:
в файле include.asm находим раздел unit_types, в котором перечислены маркеры всех юнитов - например _CARRYALL. потом в этом же include.asm по такому маркеру находим путь до файла-юнита:

--- Код: ---_CARRYALL: incbin units\carryall.bin
--- Конец кода ---

читаем файл units\carryall.bin - в нем практически вся инфа по юниту и находим в нем номер спрайта и тип: 283 и тип 7

по номеру 283 ищем в файле 2_main_sprites_ptrs.asm (81 версия файл по моему sprites_ptrs.asm) нужную строку 283х2 (х2 - потому как по 2 строки в файле на каждый пункт):

--- Код: --- dc.l NO_LOAD_GFX
dc.l carry_spr_cfg1|AIR_UNIT_SPR
dc.l NO_LOAD_GFX
dc.l carry_spr_cfg2|AIR_UNIT_SPR
dc.l NO_LOAD_GFX
dc.l carry_spr_cfg3|AIR_UNIT_SPR
dc.l HAVE_SPR
dc.l carryharv_spr_cfg1|AIR_UNIT_SPR
dc.l HAVE_SPR
dc.l carryharv_spr_cfg2|AIR_UNIT_SPR
dc.l HAVE_SPR
dc.l carryharv_spr_cfg3|AIR_UNIT_SPR
--- Конец кода ---
и тип 7 означает что нам интересны 3 строки, а лучше наверное 6 - так как там продолжение графики кериола есть на случай перевозки харвестера. итак метки 3 строк carry_spr_cfg1, carry_spr_cfg2, carry_spr_cfg3. теперь у нас есть адреса конфигов.

в файле 8_carry_spr_cfg.asm (в 81 это один большой файл sprites_cfgs.asm по моему. в моем случае был порезан один большой файл на кучу мелких по названиям юнитов. и всем была добавлена в начале цифра к названию. таким образом при входе в папку в винде эти конфиг файлы всегда находятся сверху - то есть не нужно искать глазами по папке где asm файлы затерялись среди smd файлов и редактору проще сохранять мелкий файл с 5 строками скажем, вместо всего гиганского файла)... отвлекся... так вот в файле 8_carry_spr_cfg.asm смотрим на конфиги:

--- Код: ---carry_spr_cfg1:
dc.w 1
dc.w $20, $20, $FFF0, spr2x4, crr_t1|HVMirr, $FFF0
dc.w $20, $20, $FFF0, spr2x4, crr_t1|VMirr, $0

carry_spr_cfg2:
dc.w 0
dc.w $20, $20, $FFF0, spr4x4, crr_t2|VMirr, $FFF0

carry_spr_cfg3:
dc.w 1
dc.w $20, $20, $FFF0, spr4x2, crr_t3|VMirr, $FFF0
dc.w $20, $20, $0000, spr4x2, crr_t3, $FFF0
--- Конец кода ---
где содержится инструкция о размерах изображения и положения изображения относительно квадрата 32х32, так-же есть флаги отзеркаливания изображения и ссылка на сам файл изображения. вот сейчас нас интересует как раз эта самая ссылка на изображение: crr_t1, crr_t2, crr_t3

по этим ссылкам в файле 5_math_sprites_cfgs.asm (в 81 по моему sprites_cfgs.asm) можно найти формулы расчета математики - то есть номера тайла. но сам номер мы конечно не получим - нас интересует часть формулы по адресам crr_t1 и далее:

--- Код: ---crr_t1 equ (caryall_spr1-misc_spr2)/32+base3
crr_t2 equ (caryall_spr2-misc_spr2)/32+base3
crr_t3 equ (caryall_spr3-misc_spr2)/32+base3
--- Конец кода ---
то есть наконец-то нам попались маркеры, указывающие на реальные пути файлов. то есть нашлись наконец мать их концы! caryall_spr1, caryall_spr2, caryall_spr3.

по этим адресам в файле 4_path_sprites_cfgs.asm (в 81 это sprites_cfgs.asm по моему) находим наконец эти самые реальные пути до файлов-графики юнитов:

--- Код: ---caryall_spr1:
 incbin gfx\sprites_gfx\carryall_spr1.smd
caryall_spr2:
 incbin gfx\sprites_gfx\carryall_spr2.smd
caryall_spr3:
 incbin gfx\sprites_gfx\carryall_spr3.smd
--- Конец кода ---



в редакторе графики отображается файл 8_carry_spr_cfg.asm, остальное все лежит в массивах в памяти. и это все была преамбула :)

главный вопрос в том, как мне в редакторе реализовать кнопку добавить или удалить пункт из конфига :)


если это скажем было изменение типа спрайта. был 3 градусный 0, 45, 90 - а я решил переделать на 5 градусный 0, 23, 45, 68, 90. это мне нужно в файл конфига добавить еще две строки carry_spr_cfg4 и carry_spr_cfg5, добавить в файл математики еще две строки с этой самой математикой и добавить в файл путей до файлов еще два путя и по этим двум путям создать еще два файла. БЛ@!!!!! как все это сделать?!?!? потом в плане логистики тоже проблема. предположим в редактор графу мы добавили. строчка новая в поле с конфигами появилась. добавлять её в массив внутри программы? ведь построение демонстрационного изображения происходит при участии этого "памятного" массива. это хорошо если пользователь нажмет сохранить. а вдруг пользователь нажмет отмену, передумав? а в массив уже добавлен элемент. а удалять целая история... логистика просто разрывается в клочья :) вот это дело надо сложить в голове в пазл и приступить уже к реализации - но не складывается нифига :) очень много логистических нюансов...
AuAurora:
Всё очень плохо
Docm@n:

--- Цитата: Дмитрий555 от 21 Октябрь 2017, 12:01:50 --- Где какой уровень сложности? 1800-1800; 1800-1400; 1600-1200?

--- Конец цитаты ---

1600-1200 - Легкий.
1800-1800 - Нормал.
1400-1800 - Сложный
1600-2200 - Муаддиб.
SeregaZ:
а я вчера пылесосил... и чот вроде в голову пришло. что-то получается :) и даже начал делать сохранение потихоньку. там с конфигами мысль такая: при старте редактора графики делать копию массива конфигов, и уже над копией издеваться. ежели юзверь нажал закрыть окно, без сохранения - ничо не происходит. но ежели нажал сохранить, тогда этот измененный массив копируется в оригинальный, с пересохранением файла конфига и файла графики, над которым были изменения. но вот с анимацией все так-же пока без идей.


***

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

теперь надо продумать когда выбивать диалог сохранения файла графики, в случае если пользователь решит добавить еще строку (слой) в конфиг. потом надо подумать ежели вдруг пользователь решит нажать отмену. просто тут получается две кнопки должны будут отвечать за сохранение изображения. что несколько не верно. так-же при изменении маркера-ссылки на файл изображения нужно предусмотреть чтоб старый файл удалялся за ненадобностью. но там стописят нюансов. ежели оставить  не удаленным - то тогда фактически в роме тайлы будут заняты, но использоваться игрой не будут. то есть например кериол читал картинку из crr_t1 - но я решил снести этот crr_t1, и читать из метки newcrr_t1. вот надо чтоб везде, где есть crr_t1 - он был снесен, и сам файл, закрепленный за этой меткой тоже был удален из файлов сборщика. геморой...

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



***

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

п.с.: ежели у кого есть распакованные GEMS банки от игр, которых нет в списке онлайн базы - присылайте. добавлю. так-же я думаю в эту уже существующую базу прикрутить возможность отправлять свои конвертированные треки, то есть чтоб в базе была не только музыка и спецэффекты из игр.
AuAurora:
Смели за 25 минут
Потихоньку прикрепляю звуки выстрелов из сеги к моделям(после видео), шоб всё по феншую было, позиционный звук.
Ti_:

--- Цитата: SeregaZ от 23 Октябрь 2017, 22:06:11 ---ежели его подвинуть, то можно освободить еще один тайл. 4:4 тайл итак не существовал, а мы этим самым освободим еще 4:3 тайл.

--- Конец цитаты ---
В 81b он так и расположен не по центру. В 82t я его наоборот обратно в центр подвинул и вернул 3 конфига вместо 8-ми. Иначе возникают неудобства в редактировании, из-за того что есть ещё комбо конфиги - кэриолл+харвестер, их тоже вернул к 3.
SeregaZ:
ну доделаю окончательно редактор ты сам посмотри потом... этож неудобство было из-за неудобства редактирования :) ведь не видишь что происходит. пиксель туда подвинул - собрал посмотрел - долго, неудобно, не эффективно. в моем случае ведь все под рукой. а так то я понял о чем ты - если сдвинуть чуть от центра, то после зеркалирования тайлы кериола и харвестера не совпадут. вот ежели бы зеркалилось не от границ тайла, а от границ видимой части изображения - тогда было бы дело :)

***

и наверное файл 5_math_sprites_cfgs.asm еще на 2 файла разбить надо. в одном чтоб только юнитные, во втором чтоб все остальное не юнитное.

***

хотя не... не помогает. видимо автоматику по удалению не используемой графики сделать не получится.

***

все. опять мать его затык. ежели в конфиге для одной строчки с маркером на изображение crr_t1 с размером spr2x4 взять и заменить на размер spr3x3 скажем, в этой строчке картинка будет верная. но в соседней строчке у crr_t1 все еще останется spr2x4. и следовательно отображаться она  будет не верно. чего теперь, везде где есть crr_t1 делать замену типоразмера? почему столько геморроя то а...
Lipetsk:
через 10 мин [SMD] Дюна хак Рейзора
Смотрим на:
http://elektropage.ru/video
http://peka2.tv/romhack
https://gaming.youtube.com/user/Lipcards/live
Поддержать канал: http://donatepay.ru/donation/romhack
-RagmuL-:
M3tro ™, русский ментат есть!?
SeregaZ:
кстати про ментатов... в файле конфиге только 1 координата. а что если у меня глаза совсем в другом месте? где задать размер изображения для глаз и координат для глаз?
Ti_:

--- Цитата: SeregaZ от 28 Октябрь 2017, 22:00:10 ---кстати про ментатов... в файле конфиге только 1 координата. а что если у меня глаза совсем в другом месте? где задать размер изображения для глаз и координат для глаз?

--- Конец цитаты ---
Не одна. word_25958  -  X  и Y анимации глаз.   word_25964 -  X и Y носа и рта.    Размер задать нельзя.
SeregaZ:
а если мне рот не нужен? все тайлы для рта сделать прозрачными? и посмотрев на фрименшу вообще в шоке... у неё косичка получается в файле ниже головы. откуда игра знает что косичку надо наверх установить? потом еще в файле рта не ясно... ежели все изображения одного размера и изменять нельзя - как так вышло, что в файле фрименши размеры картинок не совпадают с атрейдисными? как в плане размеров, так и в плане стартового тайла для 2 и далее картинок. первая картинка то еще совпадает так сказать. последующие нет.


***

по юнитам осталось сохранение доделать и что-то придумать с анимацией.

***

алгоритм сохранения изображения с пропуском последних прозрачных тайлов вроде родил, и на половину сохранение уже написал. а вот путаницу с фактически двумя кнопками сохранения не решил :(
Ti_:
Ментаты состоят из спрайтов. Есть карта описывающие расположение каждого спрайта.

Фременская ментатша была больше размером и не влезала. Чтобы засунуть, там ряд изменений был произведен в размерах, в схеме спрайтов, и в коде.
SeregaZ:
вот я ж чувствую что что-то не то. и этой самой карты для редактирования естественно нет в сборщике? по аналогии с юнитами там по идее должны быть конфиги :) типа картинка айди такой-то, размеры такие-то, лежит по координатам х и у... и так по всем кусочкам пазла :)
AuAurora:
Всем замес 3х3х3
Razor:
- обновил Dune Razor Missions;
- обновил Dune Razor Missions Ultimate;
- выпустил новый хак Dune Razor Missions Origins;

Скачать можно в полном сборнике: https://yadi.sk/d/OE5f8azyuUb5p
Ermac_oo:
Lin:
Возможно ли добавить в Dune 2 поддержку мыши? Кто-то пробовал уже?
SeregaZ:
Razor:
SeregaZ, там сборка обновляется, а твой редактор DUBDSE_v0.6h не может с ней работать. Когда он парсит файлы, то удаляет строчки конфигов новые. Не порядок.  :(
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

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