Category: Баги

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м

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

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

20
Апр
2021

Новая магия

Переделал «магический звук»:

Исправил несколько глюков:

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

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