Category: Prince of Persia

06
Сен
2021

Вот это поворот!

Начал разбираться с динамической задержкой и просто офигел )) Оказывается, она все-таки все еще встроена, с тех самых 90-х. И я вспомнил, как именно Женя ее реализовал — задержка вычисляется в зависимости от размера спрайта Принца. Женя тогда делал движок, который выводил только спрайты самого Принца. В каждом движении куча спрайтов и все они разных размеров. Чтобы фазы менялись с одной скоростью, Женя сделал расчет задержки на каждом такте именно относительно размера только что выведенного спрайта Принца. Так это все дело и осталось. Но потом-то добавились другие двигающиеся штуки — всякие там пилы, шипы, решетки и самое страшное — второй персонаж, стражник! Все это, конечно, внесло дополнительные тормоза, а вот их никто не учитывал и не вычитал из посчитанной задержки, которая продолжала вноситься лишь на базе размера спрайта Принца.

Выкинув задержку вообще (для теста) я получил вот такую скорость работы движка:

Сделал пример для фехтования. В начале ролика записано как работало раньше, потом идет запись работы опять без какой-либо задержки. Фехтование-то, оказывается, может быть куда живее!

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

А также, сегодня я исправил самый злостный глюк, который меня уже год бесил, наверное 🙂 Иногда, когда Принц падал вместе с двумя плитами одновременно, на экране оставался мусор. И теперь это пофикшено! Сегодня определенно удачный день.

 

02
Сен
2021

Фиксим баги, снова

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

  • у Принца была возможность избежать боя со скелетом, поправил
  • если плита падала слева от шипов, то при срабатывании они затирали лежащие обломки. Разбирательство с этим багом привело к полному переписыванию вывода шипов, выкидыванию куска кода и ускорению их работы.
  • исправлено слишком быстрое убирание шипов, когда Принц от них отходит

Как ни странно, надо вернуть динамическую задержку в Принца, иначе он слишком быстро бегает, когда на экране мало всего происходит. Это, конечно, классно, но пила срабатывает слишком быстро и прыгать через нее в этом случае уже затруднительно. Причем задержка такая раньше была, но была выкинута с проклятьями «пусть хоть иногда он шевелится быстро». Но оптимизация и переработка Принца, видимо, принесли ощутимые результаты 🙂

 

 

29
Авг
2021

Настройка управления

Сделал настройку управления от клавиатуры по АР2+K. По АР2+J можно задать и джойстик. Если я еще и сделаю выбор устройства вывода звука (AY или пищалка), то наверное стоит сделать общее меню по клавише ПОВТ 🙂 Да, на видео видна новая «подвальная» решетка в интерьере 🙂

 

29
Авг
2021

Новые пилы

Перекрасил пилу в дворцовых лабиринтах, чтобы выделялась:

Так как скопилось много элементов, которые заменяются при переходах из подвала во дворец и обратно (шипы, пилы, решетки), пришлось их вынести в два отдельных массива и заменять при загрузке нового лабиринта. Раньше они были везде одинаковые и смены не требовалось.

К чему я подошел в итоге — собственно, все глобальное сделано, оказывается. Осталось внедрить пасхалки и поправить пару известных глюков. И все, как ни странно 🙂

Ах да, я ж решил добавить возможность конфигурировать управление от клавиатуры. Еще вопрос о выводе звука на спикер — не знаю, стоит ли восстанавливать его? Жаль конечно, наши однобитные оцифровки для спикера, которые мы перегоняли с PC с помощью принтера. Но во-первых, тогда еще и музыку надо делать на спикер, а она ведь по таймеру играется. А во-вторых некоторых звуков там не хватает, а я уже и не помню как мы их преобразовывали для воспроизведения на БК. Женя писал программу для этого и я ее даже нашел, но что-то неясно как ей пользоваться. Инструкции, как водится, нет. Нам ведь тогда «итак было все понятно».

Судя по всему, на днях отдам Принца на бета-тест.

27
Авг
2021

Новые спрайты дворцовых лабиринтов готовы

Новые спрайты были нужны чтобы решить проблему с белым цветом. Принц бегает в белой одежде и при смене палитры, она должна была остаться белой. В тоже время, обстановка дворцов значительно отличается от уровней подвалов и подземелий, она значительно ярче и роскошней. Это логично, собственно. Но при этом цвета не должны быть вырвиглазными. Добавочная проблема еще и в том, что Принц должен быть достаточно контрастен на этом ярком фоне. Ноги-руки и одежда не должны сливаться с полом или боковыми стенами. Потому мне эти дворцы давно покоя не давали. И вот, вроде бы, мне удалось нарисовать обстановку, которая меня лично устроила и при этом примерно похожа на VGA-вариант оригинального Принца на PC.

Попутно я немного доработал спрайты решетки. Помимо добавленных теней и бликов, теперь решеток два вида — для дворца и для подвала. Решетка была такой:

Теперь они такие:

 

24
Авг
2021

И все-таки палитры!

Решил все же отказаться от полноэкранного мигания. Во-первых, для подготовки такого мигания приходится весь скрытый экран заливать белым или красным, а он вообще-то используется. Т.е. надо содержимое скрытого экрана сохранить, потом залить его белым/красным, потом помигать экранами, а потом еще и восстановить содержимое скрытого экрана. Получается ощутимая задержка перед срабатыванием эффекта. Во-вторых, во время такого мигания не может работать движок игры, т.к. скрытый экран занят. Не движутся факелы во время мигания, не двигаются решетки. Это, может, никто и не заметит, но неприятно. С палитрами таких проблем нет — они включаются по таймеру. Все движется, никаких затыков для подготовки. Пусть будут палитры. Выглядит  это так:

И еще сегодня я сделал-таки вывод звука «пустого удара мечом» и стражнику. В оригинале и для принца и для стражника используется один и тот же звук, но мне показалось это однообразным. Завтра попробую стражнику выдать немного другой звучок.

 

23
Авг
2021

Баги и мигания

Сегодня исправил несколько ошибок:

  • при отключении звука стражники переставали слышать шаги Принца и вовремя разворачиваться к нему. Логично, звука шагов же нет))
  • при повторном просмотре заставки целиком портился один спрайт
  • вместо меча начинал бликовать один из элементов обстановки дворца — у них с мечом один код.

А так же продолжаю мучать мигание. Полноэкранное блымкание прикольное, но имеет задержку, обусловленную подготовкой скрытого экрана. Это не подходит для быстрого мигания при падении или получения удара в бою…

22
Авг
2021

Мигание экраном

YellowRabbit подсказал, как сделать мигание экраном более скоростным, чем я делал это до этого. Я все извращался с инверсией, а он предложил залить один экран полностью белым и переключать видимые экраны. Таким образом, мигание будет наиболее скоростным. Как мне это раньше в голову не пришло? Я все заморачивался тем, что в оригинале мигает только черный фон, сами спрайты обстановки остаются неизменными. На БК такой фокус провернуть непросто. Ну вот брат подсказал подходящий вариант. Заодно попробовал и вариант с красным миганием, для случаев, когда выпивается яд. Bandicam отказался правильно захватить кадры мигания, он их пропустил. Пришлось захватывать самим эмулятором, а это там не очень удобно, да и звук пишется отдельно, скрещивай потом этих ужей с ежами… В итоге мигание все равно выглядит не так, как в игре. Потому видео удалил )