Category: Баги

24
Сен
2021

Пошумим?

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

А также:

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

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

 

07
Сен
2021

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

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

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

 

06
Сен
2021

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

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

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

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

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

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

 

02
Сен
2021

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

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

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

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

 

 

23
Авг
2021

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

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

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

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

17
Май
2021

SMK побежден

Точнее, исправлена работа с памятью. Для этого пришлось сделать следующее:

  • все данные заново перетасовать по страницам-сегментам (в итоге используемых страниц стало меньше, что характерно)
  • переделать работу с памятью, т.к. теперь уже не получится просто подключить спрайты фехтования в окно 100000, надо их копировать, как раньше, поверх спрайтов, не используемых при фехтовании. И обратно.
  • процедуру свопа пришлось вынести в основную память, т.к. код, работающий в расширенном ОЗУ на адресах 100000-140000 норовит отключить сам себя

В результате Принц заработал на реплике БК11М с SMK-512.

Попутно выяснились две вещи:

  1. Все сложные прыжки на бегу вполне успешно выполняются на родной клавиатуре БК11М, без всяких проблем
  2. На железной БКшке с SMK-512 действительно есть прирост скорости за счет использования быстрого ОЗУ в SMK

Записал ролик, подтверждающий этот факт:

11
Май
2021

Хьюстон, у нас проблема

Запустил сегодня «железную» БК11М, чтобы проверить на ней задержки смены палитр — да, задержки нужны другие, не такие как на эмуляторе. Подобрал задержки. Проверил предложенный gid’ом способ определения «эмулятор или нет» с точки зрения программы, работающей на БК. Чтение из регистра 177702 на железной БКшке вызывает прерывание по вектору 4, а на эмуляторе — нет. Отлично.

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

То ли у меня бракованный новодел, то ли «не знаю что рассказывать» (с) М. Евдокимов

 

26
Апр
2021

Новые спрайты обстановки

Модифицировал редактор лабиринтов, теперь он позволяет использовать дополнительные спрайты обстановки — разные виды кирпичей, балконы и т.д. Благодаря Желтому Кролу исправил два мощных глюка, возникших после исправления предыдущих глюков ) Это некорректный вывод звезды, оказавшейся на границе экрана и ошибка в обработке пола и стены одновременно.

22
Апр
2021

Балконы, говоришь?

По просьбам трудящихся нарисовал балкон. Теперь надо встроить его в редактор. А заодно добавить туда новые кирпичи с «дефектами», давно собирался. Лабиринты должны обрести новый вид 🙂

Пофиксено:

  • BUG: стражник убивает стоя спиной
  • BUG: мигающая жизнь конфликтует с переключением экранов

 

22
Апр
2021

Новая партия багов

Братец Кролик выдал новое ведро багов (копил, видать). Он их сопровождает видеороликами, я их смотрю и пишу для себя что исправить. И вдруг замечаю, что некоторые записи приобретают скрытый смысл, как будто вырваны из рассказов Эдгара По или Лавкрафта:

  • BUG: скелет теряет интерес к принцу
  • BUG: после выпивания кувшина сверху наступает хаос
  • BUG: смерть в перевернутом виде неизлечима
  • BUG: после смерти нужны другие маски

Итак, исправлено:

  • BUG: скелет теряет интерес к принцу
  • BUG: плита не падает в 11м
  • BUG: после выпивания кувшина сверху наступает хаос
  • BUG: смерть в перевернутом виде неизлечима
  • BUG: при спрыгивании из виса неверно считалась высота
  • BUG: на заносе пролетает сквозь закрытую решетку
  • BUG: глухой стражник в 9м

Тот самый глухой стражник:

В оригинале ситуация не сильно отличается: