Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - spiiin

Страницы: Назад 1 ... 20 21 22 23 [24] 25 26 Далее
691
Апдейт редактора
Можно редактировать форму уровня и расставлять двери (правда, не очень удобно).
Редактор стал чуть более сложным в использовании за счет того, что теперь практически везде надо указывать вручную, какой блок видеопамяти используется. Поэтому на всякий случай засунул в архив и старую версию - для уровней, в которых не надо менять форму, можно использовать его, будет проще.

Пример рассчета параметров для редактирования дверей в readme.txt, или можно скачать мой пример с уровнем из черного плаща и открыть его в редакторе - там перестроенные двери 1-4.

evgeny, смещения в настройки пока не вынес, но к этому уже очень близко :)

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

692
получится. можно сделать до 16 объектов ящиков и у каждого свой бек будет. какой именно из 16 - зависит от 4х младших бит номера объекта

693
Про беки описывал чуть, как устроено. можно объекты попереставлять просто местами на 16 соседних позициях - там 16 вариантов бека будет доступно разных. Можно попробовать подобрать такие 2 позиции, чтобы подходили, если повезет :)

694
ага, в RAM, а потом тот же список в ROM.
Для первой части, начала описаний объектов в ROM:
уровень 0 - 10388-103D3
уровень А - 10456
уровень B - 105A1
уровень C - 106D1-10709
уровень D - 10890-108F0
уровень E - 10A1D-10A66
уровень F - 10B0E-10B36
уровень G - 10C88-10СDA
уровень H - 10DB3-10DE7
уровень I - 10EA1-10ECD
уровень J - 10FED-11033

Добавлено позже:
не загруженных в настоящий момент, а вообще всех на уровне

695
Вообще без знания асма сложно раскодировать тип объектов, разве что очень сильно повезет.

С дизассемблером общая методология такая - нужно найти в памяти список объектов. По найденному в памяти известному значению (например, кол-во цветков легко ищется или позиция на экране), надо доковыряться до кода цветка. Если будешь знать коды хотя бы двух предметов - этого вполне достаточно, чтобы найти все остальные - тупо открываешь ROM в шестнадцатеричном редакторе и вбиваешь известную последовательность.

Теоретически, есть другой подход, который не требует дизассемблирования, но потребует знания какого-нибудь языка программирования и немного математики, чтобы составить скрипт перебора вариантов. На практике я его пока не проверял :)
Выписываем список всех объектов, которые встречаются на уровне по порядку (важно не пропустить скрытые). Например, "цветок, цветок, пчела, цветок, мышь". Дальше надо написать программу, которая будет искать в памяти цепочку байт XXYXZ, где X,Y и Z могут быть любым значением от 0 до 255. Основная сложность в том, что такая программа может работать очень долго - даже для трех типов объектов потребуется перебрать 256*255*254 = 16581120 вариантов.

И первый, и второй способ сработают, только если объекты в памяти последовательно лежат (для первого чипа и дейла это так, а, например, для охотников за привидениями – нет).

Ну а вот чтобы просто скрыть объект, фокуса нет - для каждого типа разработчики пишут свои программы поведения, они любыми могут быть :)

696
feos, я не разбирал формат C&D 2, шарик случайно обнаружился :)

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

Добавлено позже:
Хотя все-таки замечание оставлю свое  :lol:
почему вот эта платформа "подрезанная"? :) все остальные закругленные, а эта такая

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

Пока тестил, пофиксил хак evgeny с уровнем из черного плаща, чтобы там скроллинг как надо работал.

699
evgeny, быстро посмотрел, как устроен выбор фона под тайлом, который можно собрать или взять. это явно указать нельзя, зависит от младших четырех бит номера объекта. они являются указателем в массиве из 16 номеров (вроде бы уникальный для каждого уровня, для первого хранится по адресу 1E909).
Действительно, сложно подобрать под объект подходящий фон, пожелание принимается :)

Добавлено позже:
Rocket вон в своем левеле это грамотно обошел, и не заметно проблемы :)

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

Добавлено позже:
может, кто-то более ориентирующийся в теме меня поправит :)

701
Roket, по количеству врагов ограничение есть, ага  :(
вообще враги описываются по всему уровню, но на момент начала написания редактора я мог сделать только так, разделив их по частям на подуровни. В след. версии я это уберу, но я ее сделаю, тока примерно когда вы к уровню 5-6 подберетесь, не раньше.

пока придется либо довольствоваться этим, либо править список врагов руками в хекс-редакторе %)
список начал кодов объектов [ПЕРЕД списком лежит еще 4 массива с описаниями координат X и Y]
0:0x10388
A:0x10456
B:0x105A1
C:0x106D1
D:0x10890
E:0x10A1D
F:0x10B0E
G:0x10C88
H:0x10DB3
I:0x10EA1
J:0x10FED

       

Добавлено позже:
Да, заодно, собрал в кучу исправленное описание дверей и уровней
Описание дверей (25 записей)
1E673 - индекс экрана в раскладке.
1E68B - Y экрана.
1E6A3 - X экрана.
1E6BB - номер блока графики для фона.
1E6D3 - номер блока графики для объектов.
1E6EB - номер используемой палитры.
1E703 - номер второй палитры (влияет на объекты типа Вжика и Рокки и и используется для блинка).
1E71B - побитовое описание блинка цветов (из первой и второй палитры).
1E734 - позиция появления игроков Y.
1E74C - позиция появления игроков X.

Описание уровней (15 записей).
101B2, 101A3 - указатели на старшие байты координаты X объектов (номера экранов).
101D0, 101C1 - указатели на младшие байты координаты X объектов (позиция на экране).
101EE, 101DF - указатели на старшие байты координаты Y объектов (номера экранов).
1020C, 101FD - указатели на младшие байты координаты Y объектов (позиция на экране).
1022A, 1021B - указатели на тип объектов.
10248, 10239 - указатели на данные о направлении скролла для каждой линии высоты уровня.
1E201  - индекс в описании больших блоков уровня (совпадают для пар уровней).
1E26A - номер трека на уровне.
1E2A6, 1E297 - указатели на раскладку (форма уровня).
1E2C4, 1E2B5 - указатели на описание (направление скролла + номер двери).
1E210 - номер в раскладке стартовой комнаты.
1E23D - номер блока графики для объектов (8x=enemy gfx, 9x=tile gfx).
1E24C - номер блока графики для фона (8x=enemy gfx, 9x=tile gfx).
1E25B - номер палитры, используемой на уровне.
1E279 - номер второй палитры, используемой на уровне.
1E288 - побитовое описание блинка цветов (из первой и второй палитры).
1E22E - размер по высоте раскладки уровня.
1E21F - размер по ширине раскладки уровня.

702
Дык это в новой

Добавлено позже:
Rocket, не поможешь мне еще с картинками для редактора?
я накалякал обозначения условные для спрайтов и цифры для номеров дверей (от 0 до 18 в шестнадцатеричной системе), но они совсем уж условные

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

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

Ну и редактор врагов переделать полностью придется.


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

706
Так, помимо скролла бека уровня разобрал способ скроллинга игровых объектов. За списком объектов в уровне лежат n байт, которые определяют для каждой линии высоты уровня, в какую сторону сортируются объекты (00 - слева направо, 03 - справа налево, другие значения не используются). Причем эти байты втиснуты вплотную в описания объектов, так что увеличить высоту уровня тоже не выйдет (тока если передислоцировать их куда-то).



Добавлено позже:
Зато отсюда следует, что сортировку врагов все-таки можно сделать :)

707
Lomax, жесть :) если так дальше будет, хак не по 30 чел будут качать, а по 300. Летучие мыши пару раз пропадали куда-то, но воспроизвести не удалось.
Rocket, желуди очень точно расставлены, реально спасают жизнь ) тока концовка уровня как-то легче чем начало показалась. Может там на самой верхней полосе чуть меньше ящиков оставить?

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

709
"двери", если что, объект типа 5. ставить можно и нужно на тех экранах, где они в игре были, либо править карту скроллов в хекс-редакторе (там три байта на скролл, пять байт на номер двери)

710
Из графики я бы только к кактусам придрался - они внешне не определяются как препятствие вообще.

711
Lomax, там в одном месте только такая штука на всю игру. Думаю, те кто начал делать хак, смогут вручную это место поправить. Это нехорошо конечно, но самое простое решение :)

Ща на скринах объясню в чем проблема.
Карта уровня 0. слева - поправленная версия. Я по стрелочкам могу алгоритмом однозначно определить, в каком порядке будут проходиться все экраны, считая, что двунаправленная стрелка означает направление вправо. справа - версия из игры. однозначно сказать в каком порядке будут проходиться экраны нельзя :( Почему разработчики поставили там такую стрелку - хз.


Добавлено позже:
Вторая беда в том, что если делать, как просит evgeny, считывая все из ROM, иногда случаются поломки. Например, ошибка разработчиков в уровне D, там случайно перекрываются на 1 байт массив координат объектов и массив самих объектов. Там это прошло незаметно, но если дать возможность в редакторе вписать последний объект, то получится, что он пропадет.
Чтобы избежать таких багов, придется выбирать, либо поддерживать все костыли оригинального рома, либо убрать из него проблемные места, зато дать удобные возможности для редактирования (пока что я хочу вырезать из оригинала вот тот портящий все поворот и убрать сыр в конце первой зоны, потому что там сортировка объектов нарушена разработчиками умышленно, с правильной босс не появляется %)).

Я за второй вариант, так как редактор в основном используется для глобальных переделок, а не для мелких правок оригинальной игры.

Добавлено позже:
мда, доделал редактор раскладок, но теперь надо переделать вообще все остальные части (редактор экранов, так как теперь точно нельзя сказать, какой экран какому уровню принадлежит, редактор тайлов, так как тайлы зависят не от моих условных "подуровней", а от уровня (12 штук) или двери (32 штуки), редактор врагов, так как теперь экраны можно переставлять, и их координаты меняются, редактор дверей). Стока всего быстро сделать не выйдет. Так что лучше не ждать новых версий и делать хаки в последней версии (0.4).
пока всё.

712
со скроллом так:
в каждом байте старшие 3 бита кодируют возможность пройти в разных направлениях, а младшие 5 указывают на то, куда телепортирует игрока дверь, если она есть на этом экране. Описания дверей по адресу 1E673, формат есть на acmlm.

Цитата
1e23d - начало спрайтов врагов
тогда уже так точнее :) :
1E23D graphics set for enemies/objects (8x=enemy gfx, 9x=tile gfx)
1E24C graphics set for level tiles (8x=enemy gfx, 9x=tile gfx)

Добавлено позже:
Lomax, я делаю пока что только форму уровня, двери может быть тока через версию :)

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

713
Цитата
Ну раньше порядок экранов знал, а теперь из рома этот порядок можно прочитать, какая разница?
порядок экранов нигде не хранится. есть только карта экранов и карта скроллов. а список объектов разработчики видимо вручную сортировали в порядке прохождения уровня. я то этот порядок не буду знать заранее, если разрешу в редакторе его настраивать. так что надо либо пользователей заставить следить, чтобы все объекты на уровне по порядку появления экранов шли, либо автоматически этот порядок считать, что я хочу сделать

Добавлено позже:
так, начал чуть разбирать формат дверей. они общие на всю игру, а не только на уровень. это круто :)

714
evgeny, а, да, они подряд идут, не увидел, не надо их искать :lol:
адреса начал тоже можно из рома брать будет, ооок.
 
Цитата
что в роме равно 1E2D3

а вот это как получается? 16 байт заголовка + самый старший байт просто копируется, так?

ок, уже лучше =)

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

715
evgeny, ок, все адресозависимые штуки вынесу потом в xml. Их уже немало накопилось

716
evgeny, так, нельзя, сломается. В ром есть указание размеров раскладки уровня, длины  и ширины.
Для первого уровня это адреса 1E22E и 1E21F, для остальных надо искать, но я их и так знаю, поэтому так вбил.

Дальше есть описание прямоугольника с раскладкой:
layout @ 1E2D3: (level 1)

1E2D3:
16 17 18 19 1A 1B 00 <- inside area 00
0F 10 11 12 13 14 15
0E 00 00 00 1D 00 1C <- boss entrance 12
08 09 0A 0B 0C 0D 00
00 00 00 00 00 07 00
01 02 03 04 05 06 00

на скрине это же описание, но с готовыми экранами

Тупо геометрически описан весь уровень (размером 7x6, номера комнат соотвестствуют тому, как они описаны в игре - комната X описана по адресу 0x10 + 0x40 * X). Дальше еще есть такая же раскладка из 42 байт для скроллов и дверей (в одном байте описано и то и то).

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

Добавлено позже:
все размеры уровней :
0:(7,6), A:(3,8), B:(8,3), C:(8,3), D:(8,4), E:(8,3), F:(8,5), G:(8,4), H:(8,5), I:(8,3), J:(8,4)
если кто-то решится их править, сохраните адреса, я тогда в редактор вместо констант пробью их, чтобы они из ром читались.

717
evgeny я ссылку приводил чуть выше, там это описано, я уже тоже понял :) там тупо геометрически раскладка уровня нарисована.
адреса раскладок по ссылке все есть, надо только мне адреса скроллов еще собрать, и потом сделаю это в редакторе.

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

Добавлено позже:
Lomax, скролл вниз движком кажется не поддерживается вообще :) и развилки тоже нельзя делать

718
Фишка чипа и дейла, в отличии от игр типа Adventure Island, в использовании уникальных объектов на уровнях (молоток и лодка на уровне E, закручивающиеся краны из B, во второй части - вжик, открывающий воду, катание на тележках и т.п., в каждом почти уровне есть). Набор этих фишек жестко ограничен уже имеющимися, разве что поломать некоторые можно будет для масштабного хака, так что надо при дизайне уровней грамотно их использовать.

720
http://acmlm.no-ip.org/board/thread.php?id=5821
Вот что нашел :)
Со временем разберу эти шифровки )

Lomax, там пример, как поведение объекта поменять есть, пригодится, если врагов переделывать
1105C do apples scroll with screen
1105D how apples act
1105E how apples behave

Страницы: Назад 1 ... 20 21 22 23 [24] 25 26 Далее