Category: Баги

26
Сен
2021

Славная охота

Итак, сегодня сделано:

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

Осталось совсем немного:

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

 

 

25
Сен
2021

Шумеры

Сделано:

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

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

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

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

 

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

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

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