БК-11М в 21м веке

25
Сен
2021

Шумеры

Сделано:

  • по совету Yellow Rabbit сделал микширование шума поприличнее. Артефактов стало поменьше.
  • поправил некоторые лабиринты (в паре мест обрывался узор, а в демо-лабиринт закрался дворцовый кирпич)
  • пришлось править сценарии демо-битв, т.к. с новым RND стражники стали драться активнее
  • увеличил паузу в срабатывании пил, почему там было 6 кадров вместо положеных 8 — неясно. Теперь пила работает как в оригинале. Но в итоге в демо пришлось править сценарий прохода через пилу, т.к. вместо «как надо переходить через пилу» с новой пилой получилась демка «как Принц запиливается»

Что осталось сделать:

  • у зеркала осталась синяя плита (от старой обстановки дворцов)
  • иногда муз.процессор не выключается и продолжает шуршать или свистеть
  • у стражника остались удары-промахи без звука
  • в падении с большой высоты Принц может помереть два раза, если упадет на «ветхую» плиту
  • маски на дохлого Принца надо накладывать иначе
  • добавить внезапный музон в 6-м
  • сделать подсчет времени по таймеру, а не по кадрам (раз Принц теперь бегает как на PC)
  • попытаться оптимизировать вывод решеток — они (в большом количестве) все-таки тормозят Принца. Может там тоже найдется что ускорить.

Звуки на спикер еще не выброшены из Принца, они вполне прилично звучат. Пробовал даже включать одновременный вывод звука и на AY и на спикер — прикольно. Наверное стоит их доделать, теперь они не тормозят принца. Неясно что делать с музыкой на спикер, правда. Попробовал несколько музыкальных редакторов («Маэстро», еще какой-то) — как-то фальшиво звучит в эмуляторе. Не знаю, может дело в эмуляторе, а может в тех демо-музонах, которые с ним идут. «Клавесин» на железе вроде звучал прилично, но та версия, что мне удалось найти, в эмуляторе виснет при старте.

 

24
Сен
2021

Пошумим?

Продолжаю чистить баги по списку. Одна из записей гласила «в 8м лабиринте, при работающих пилах нажатие плиты вызывает бесконечный дикий скрежет».  Вылез, думаю, как раз тот случай, когда несколько звуков, звучащих одновременно, содержат данные шума. А регистр шума-то всего один! Естественно, шум от трех каналов просто так не выведешь. Я надеялся, что шум из нескольких каналов не вызовет особого конфликта — шум да и шум. Нифига. Пришлось делать обработку этого случая. Сделал. Прихожу снова в то место, нажимаю плиту — опять тот же самый дикий скрежет. WTF?? Начинаю смотреть детально — причина диких звуков вообще не в этом. Никакие шумы не конфликтуют, просто плита там хитрая и не освобождается от Принца до конца, в итоге генерируя бесконечное событие «нового нажатия».  А система приоритета шума уже сделана. Хрен с ней, авось пригодится 🙂

А также:

  • исправлен звук открывающейся двери
  • исправлен RND стражника (был сломан новым циклом таймера из-за динамической задержки)
  • освобожден кусок памяти

С новой задержкой играть в Принца стало значительно приятней, все равномерное и плавное, прямо не верится )) Старые дергания и тормоза порядком бесили.

 

22
Сен
2021

Скорость

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

07
Сен
2021

Под стук колес

Пока ехал в поезде, пофиксил несколько багов:

  • после смерти в бою при выходе из двери Принц приседал (в буфере макрокоманд оставался код команды «клавиша вниз»
  • крайние правые шипы выводились неверно
  • была слишком маленькая пауза перед рестартом игры после «Press button to continue»
  • если на голову падала плита и отнимала последнюю жизнь — Принц не умирал

 

06
Сен
2021

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

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

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

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

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

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