Автор Тема: [NES] Prince of Persia Level editor  (Прочитано 87994 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #30 : 19 Июнь 2013, 01:01:32 »
А в игре же не было двойника?
Ну как же. В 4, 5 и 6 уровнях.

Две плитки, кот обваливаются(0x0В) тоже рядом ставить нельзя, а то крашится?
Там много чего зависит от обстоятельств. Чем меньше движущихся тайлов в комнате, тем лучше. В 11 уровне 3 падающих плиты подряд - и ничего.

Оффлайн Realsalewa

  • Пользователь
  • Сообщений: 24
  • Realsalewa's Soft
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #31 : 19 Июнь 2013, 18:11:43 »
турбо кнопка всегда выручает. Он там на долю секунды всегда зацепится и не коцнется
А как настроить турбокнопку(лучше на FCEUltra)?

В видеопрохождении плитка падает на голову и не наносит урон?
http://youtu.be/mv0F3CBQ_gc?t=22m39s

А при прохождении принц не заходит во все двери (проходит мимо выходов), в NES версии борется со своим отражением (а тол вроде просмотрел в видеопрохождении)?
« Последнее редактирование: 19 Июнь 2013, 18:26:01 от Salewa »

Оффлайн Sprill

  • Пользователь
  • Сообщений: 1003
  • Пол: Мужской
  • Вескер никогда не снимает свои очки.
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #32 : 19 Июнь 2013, 20:29:50 »
А возможно сделать так, что бы двойник был на 12 уровней вместо скелета?

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #33 : 20 Июнь 2013, 02:40:29 »
А возможно сделать так, что бы двойник был на 12 уровней вместо скелета?
Подозреваю, что без правки кода - вряд ли. Но, можно, наверное, вместо тайлов скелета поставить тайлы принца, и тогда он будет с ним драться (чтобы соединялся, как в оригинале, надо будет логику кода менять, скорее всего). С двойником еще предстоит разобраться.
Пока разобрался с demo-play. Если хочется прилизать конечный хак, то можно подстроить demo-play под свой уровень. Все это будет в следующем релизе.

В данный момент осталось разобрать две вещи: где и как открывается дверь на 13 уровне, а также появление и поведение двойника.
С двойником, боюсь, будет сложно, т.к. наиболее вероятно, что там какой-то хардкод. Но даже без последнего игру (логику уровней) можно вполне себе нарисовать полностью.
« Последнее редактирование: 20 Июнь 2013, 02:51:49 от ALXR »

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #34 : 21 Июнь 2013, 18:29:25 »
Выложил версию 1.0.2.

Пару слов о demo-play. Редактировать его при отсутствии сноровки сложно, поскольку необходимо достаточно точно выставлять время того или иного действия принца. Время выставляется в частоте обновления экрана (VBlank). Также, спуск и подъем на этаж ниже/выше следует разделять на несколько действий с паузами между ними, иначе он спустится/поднимется на один этаж и встанет как вкопанный.

PS: Если интерес к редактору еще у кого-нибудь остался, то продолжу исследования. :)

Оффлайн Realsalewa

  • Пользователь
  • Сообщений: 24
  • Realsalewa's Soft
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #35 : 21 Июнь 2013, 22:16:19 »
ALXR, у меня на Win8-x64 при нажатии на Demo-play - редактор закрывается.

Оффлайн x.GREYSON.x

  • Пользователь
  • Сообщений: 532
  • Пол: Мужской
  • Электролыбка
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #36 : 22 Июнь 2013, 16:23:55 »
Цитата
ALXR, у меня на Win8-x64 при нажатии на Demo-play - редактор закрывается
Такая же фигня и на х32 Win7. Если можно по-подробнее про Advensed. Что это и зачем?
Окошко выбора уровня сделай так, чтобы не было прокрутки.
Подрисуй к спрайтам все необходимые значки (особенно к бутылкам) при нажатии Pg Up/Pg Dn.
« Последнее редактирование: 22 Июнь 2013, 17:05:27 от x.GREYSON.x »

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #37 : 22 Июнь 2013, 18:00:00 »
Такая же фигня и на х32 Win7.
Любопытно. Из-за шрифта Courier, чтоли...

Если можно по-подробнее про Advensed. Что это и зачем?
В игре есть "особые комнаты" в уровнях. В Advanced перечислены лишь три из них.
1. Комната, которая появляется в начале игры (где игрок выбирает - будет с начала играть или пойдет пароль набирать);
2. Комната из 6 уровня, в которую принц попадает при падении перед двойником в пропасть и попадает в 7 уровень (ее можно переназначить в любой другой уровень);
3. Комната из 12 уровня, при входе в которую происходит переход в 13 уровень (ее тоже можно переназначить).

Комнату из первого пункта нет смысла переназначать, потому что движок довольно чувствителен к строению той комнаты.
Если переназначить комнаты из 2 и 3 пунктов, то можно будет переходить в следующей уровень, если попасть в комнату из 2 пункта сверху (как в 6 уровне), а в комнату из 3 пункта слева (как в 12 уровне).

Окошко выбора уровня сделай так, чтобы не было прокрутки.
Да, там еще обработка DblClick не помешает :)

Подрисуй к спрайтам все необходимые значки (особенно к бутылкам) при нажатии Pg Up/Pg Dn.
Да, я это помню, но окончательное прилизывание я оставил на чуть-чуть попозже. Сейчас пока занимаюсь появлением "двойника". Правда, сделать что-либо будет с  ним, боюсь, будет сложно. Очень уж на многое там это завязано...

Оффлайн x.GREYSON.x

  • Пользователь
  • Сообщений: 532
  • Пол: Мужской
  • Электролыбка
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #38 : 22 Июнь 2013, 23:23:44 »
Цитата
Сейчас пока занимаюсь появлением "двойника". Правда, сделать что-либо будет с  ним, боюсь, будет сложно. Очень уж на многое там это завязано...
Кстати, в версии что Я выкладывал там он появляется при переборе спрайтов в комнате. в оригинале тоже, в 4 уровне когда нажмешь кнопку выхода и прыгнешь в зеркало вернись и снова нажми кнопку (это из-за появившегося зеркала).

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #39 : 25 Июнь 2013, 17:56:02 »
Кстати, в версии что Я выкладывал там он появляется при переборе спрайтов в комнате. в оригинале тоже, в 4 уровне когда нажмешь кнопку выхода и прыгнешь в зеркало вернись и снова нажми кнопку (это из-за появившегося зеркала).
Это глюк движка. Процедура проверки при определенных условиях выставляет флаг по адресу $0401 (в RAM) в 1, и тогда в комнате появляется двойник. По адресу $0402 лежит флаг, который определяет - выполняет двойник действие или нет (но не везде).
Например, если в роме (здесь и далее эксперименты с Prince of Persia (U) [!]) выставить по смещению 0x0A1E1) вместо 00 записать 01, то двойник будет во всех комнатах. Больше того, он будет стоять вместо всех стражников и скелетов на всех уровнях (правда, драться с ним нельзя будет). Между тем, игра станет непроходимой из-за 8-го уровня, где мышь должна нажать кнопку и открыть решетку.

К слову, по смещению 0x0A399 (до байта со значением FF) идет порядок действий двойника в 5 уровне (где он подбегает и выпивает бутылку, если нажать на кнопку, открывающую выход). Формат данных таков: XX1 YY1 XX2 YY2 ... XXn YYn FF, где XX - время, в течение которого выполнять действие, YY - код самого действия (всего допустимых значений от 01 до 5E включительно). Код задает адрес смещения в ROM в таблице указателей на данные, в которых описываются эти самые действия.

Все описанное, конечно, интересно, но редактировать, в сущности, нечего, т.к. это не дает возможности редактирования всех возможностей двойника (только частные случаи). Тут надо реверсить полдвижка для понимания процессов поведения спрайтов. Так что редактирование действий двойника пока откладывается. :)

Salewa, x.GREYSON.x
Ниже выкладываю версию, где шрифт в диалоге Demo Play установил в стандартный, может заработает...
« Последнее редактирование: 25 Июнь 2013, 18:07:42 от ALXR »

Оффлайн Realsalewa

  • Пользователь
  • Сообщений: 24
  • Realsalewa's Soft
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #40 : 26 Июнь 2013, 20:25:32 »
Salewa, x.GREYSON.x
Ниже выкладываю версию, где шрифт в диалоге Demo Play установил в стандартный, может заработает...

Работает.

Оффлайн Sprill

  • Пользователь
  • Сообщений: 1003
  • Пол: Мужской
  • Вескер никогда не снимает свои очки.
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #41 : 27 Июнь 2013, 00:11:25 »
Сделал только 1-уровень.

Добавлено позже:
P.S. ALXR, спасибо за редактор.

Оффлайн x.GREYSON.x

  • Пользователь
  • Сообщений: 532
  • Пол: Мужской
  • Электролыбка
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #42 : 27 Июнь 2013, 15:29:53 »
В общем вот мое творение.
А зачем номера комнат вывел в редакт-поле? (хотя бы черный фон убери)

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #43 : 27 Июнь 2013, 16:24:47 »
В общем вот мое творение.
А зачем номера комнат вывел в редакт-поле? (хотя бы черный фон убери)

Если уберу черный фон, то текст будет сливаться с фоном и в некоторых случаях станет не читаемым.
Номера вывел для удобства навигации и перемещения комнат, ибо в Level layout только номера.

В следующей версии ожидаются:
* Настройка поведения принца при входе в уровень (выбегать слева [как в уровне 1], выбегать справа [как в уровне 13] или падать сверху [как в уровне 7]);
* Редактор текста;

Возможно что-то еще...

Оффлайн x.GREYSON.x

  • Пользователь
  • Сообщений: 532
  • Пол: Мужской
  • Электролыбка
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #44 : 27 Июнь 2013, 17:44:09 »
Кстати, какой-то косяк испарил в 4 левеле зеркало. Сначала думал, чтобы оно появилось не должно быть охранников, но это не сработало.
Относительно шрифта - сделай цифры красным цветом, чуть больше размером, и дендевским шрифтом. Думаю будет красиво

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #45 : 27 Июнь 2013, 19:12:12 »
Кстати, какой-то косяк испарил в 4 левеле зеркало. Сначала думал, чтобы оно появилось не должно быть охранников, но это не сработало.
Относительно шрифта - сделай цифры красным цветом, чуть больше размером, и дендевским шрифтом. Думаю будет красиво

Зеркало должно появляться над тайлом 0x0D[+/- 0x20*n]. Следовательно, ты там поместил обычную плиту 0x01, потому и не появляется.
Кстати, в комнате может быть или двойник или охранник. Если ты в комнату с двойником засунешь стражника, то вместо него будет стоять неподвижно двойник. :)


В отношении шрифтов. Тайлы я редактировать не планирую (оставлю тем, кто любит графику ковырять), а вот сам текст изменить будет можно.


Оффлайн x.GREYSON.x

  • Пользователь
  • Сообщений: 532
  • Пол: Мужской
  • Электролыбка
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #46 : 27 Июнь 2013, 19:36:44 »
Я имел ввиду в проге шрифт цифр комнат. Так чем восстановить зеркало?

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #47 : 27 Июнь 2013, 20:19:20 »
Я имел ввиду в проге шрифт цифр комнат. Так чем восстановить зеркало?

А, ок, шрифт вколочу. По поводу зеркала: посмотри, какой там тайл стоит на месте появления зеркала - его же поставь.

Есть только такой момент: в 4 уровне его можно поставить в любое место и после нажатия на кнопку открывания выхода оно там и появится, но вот только двойник будет появляться в строго определенном месте, заложенном игрой. Хардкод, вобщем.

Оффлайн x.GREYSON.x

  • Пользователь
  • Сообщений: 532
  • Пол: Мужской
  • Электролыбка
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #48 : 27 Июнь 2013, 20:50:41 »
Цитата
По поводу зеркала: посмотри, какой там тайл стоит на месте появления зеркала - его же поставь.
Я понял в чем хардкор. На появления зеркала, двойника и т.д. влияет сам тайл. Например для зеркала нужны 2 таких тайла - 1-й пустая плита с адресом 0хАD и 2-й кнопка открывающая выход без подписи адресом 0хСF. Короче влияют все эти адреса в совокупности. Если прошерстить, то можно еще чего-нибудь накопать.
У меня ошибка с тайлом кнопки была.

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #49 : 27 Июнь 2013, 20:54:06 »
Я понял в чем хардкор. На появления зеркала, двойника и т.д. влияет сам тайл. Например для зеркала нужны 2 таких тайла - 1-й пустая плита с адресом 0хАD и 2-й кнопка открывающая выход без подписи адресом 0хСF. Короче влияют все эти адреса в совокупности. Если прошерстить, то можно еще чего-нибудь накопать.
У меня ошибка с тайлом кнопки была.

Да, я про это забыл. В движке даже проверка есть именно на код тайла 0xCF. :)

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #50 : 29 Июнь 2013, 02:44:42 »
Залил версию 1.0.3. Теперь можно выставлять до 15 единиц здоровья (больше, полагаю, не нужно).
Еще добавил пару интересных вещей (на первый взгляд не существенных, но попотеть пришлось). Вобщем-то, краткое описание дал в первом сообщении. :)

Оффлайн ПАУК

  • Пользователь
  • Сообщений: 1543
  • Пол: Мужской
  • Ну-ка, от винта!
    • Steam
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #51 : 29 Июнь 2013, 04:43:12 »
Хекс-код B377 отвечает за время. Если кто-то захочет прибавить.

Оффлайн x.GREYSON.x

  • Пользователь
  • Сообщений: 532
  • Пол: Мужской
  • Электролыбка
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #52 : 29 Июнь 2013, 11:30:14 »
Цитата
Если кто-то захочет прибавить.
Я хочу

Оффлайн ПАУК

  • Пользователь
  • Сообщений: 1543
  • Пол: Мужской
  • Ну-ка, от винта!
    • Steam
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #53 : 29 Июнь 2013, 11:45:46 »
Только если больше 90 сделать - некрасиво получается, циферблат двухзначный.

Оффлайн Rockman Z

  • Пользователь
  • Сообщений: 11946
  • Пол: Мужской
    • ВКонтакте
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #54 : 29 Июнь 2013, 12:52:46 »
Экстремально крутой редактор!  :wow: Такой можно адовый хардкор замутить!

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #55 : 29 Июнь 2013, 13:25:31 »
Хекс-код B377 отвечает за время. Если кто-то захочет прибавить.

Тут бы следовало уточнить, что:
1. Это касается локализации (U);
2. По указанному смещению лежат десятки минут, единицы лежат по смещению 0x0B73F;
3. Оба числа представлены в ASCII кодировке, т.е. 37 минут будет выглядеть как 0x33,0x37.

И если мы хотим, чтобы на старте была (например) 71 минута, то в (U) версии по смещению 0x0B377 записываем 0x37, а по смещению 0xB37F - 0x31.

Оффлайн Sprill

  • Пользователь
  • Сообщений: 1003
  • Пол: Мужской
  • Вескер никогда не снимает свои очки.
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #56 : 29 Июнь 2013, 17:17:08 »
Ещё было бы не плохо, добавить возможность менять палитру. :)

Оффлайн x.GREYSON.x

  • Пользователь
  • Сообщений: 532
  • Пол: Мужской
  • Электролыбка
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #57 : 30 Июнь 2013, 11:44:30 »
Цитата
Ещё было бы не плохо, добавить возможность менять палитру. :)
Можно палитру взять из ДОС-версии. синяя, зеленая, коричневая и т.д.

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #58 : 30 Июнь 2013, 14:09:56 »
Да, все это планируется, но чуть попозже, сейчас хочу закончить работу с движком и будет окончательный релиз.
Добавлено позже:
Кстати, интересно, что если правую плиту с шипами переместить на одну позицию вправо, то в комнате появляется атакующий принца двойник. Надо будет еще посидеть с дебаггером, выяснить причины его появления и поведения. :)
Банальный buffer overflow. В память записываются структуры данных (достаточно длинные) для каждого активного тайла в комнате. Если их больше определенного числа, то они перезаписывают память, которая используется для других нужд (в частности, структуру, которая отвечает за двойника).
« Последнее редактирование: 30 Июнь 2013, 17:24:19 от ALXR »

Оффлайн ALXR

  • Пользователь
  • Сообщений: 337
    • Просмотр профиля
Re: [NES] Prince of Persia Level editor
« Ответ #59 : 02 Июль 2013, 16:54:10 »
Разобрал основной принцип работы двойника.
По текущему положению дел ситуация следующая: либо оставлять как есть (максимум - добавить возможность переноса комнат, где он появляется, в другие уровни/комнаты), либо добавлять в ROM еще 8 банок и допиливать движок так, чтобы работать с двойником было удобнее, как то: новые фичи в игре (например, возможность добавить его в 12 уровень, где принц будет сливаться с ним, как в оригинальной версии или... все, что только в голову придет). Последнее - довольно кропотливая работа, поэтому если кто присоединится, то можно пойти по второму варианту развития редактора.

По первому варианту: добавлю редактирование палитры, дорисую тайлы (некоторые из них неправильные в уровнях дворца) и редактор будет закончен.