Category: Баги

23
Дек
2023

Coming soon

Свободная память осталась, так что можно слегка разгуляться:

  • сделал дополнительные спрайты Балбеса, развернутые влево – ускорение при выводе
  • заменил вычисления таблицей в процедуре позиционирования
  • таблица скоростной ходьбы (при взятии Кедов) теперь сразу грузится в память при старте

Исправил баги, добавленные при последних изменениях в процедурах вывода, а также некоторые старые:

  • скелет при прыжке не обрезался по верхнему краю
  • Шериф мог застрять при переходе из окна в окно, если Балбес в этот момент тоже перейдет
  • переименовал файлы данных, чтобы Goonies мог находиться на одном диске с Prince of Persia (были совпадающие имена)

Осталось еще пару глюков победить, сделать работу из MKDOS и буду релизить. Есть еще идеи по ускорению, но может потом выпущу вторую версию, если эффект ускорения будет ощутимым.

 

 

 

20
Дек
2023

Получилось!

Сегодня удачно поработал:

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

Оптимизация “всего понемногу” в итоге дала кумулятивный эффект – в самых нагруженных местах все стало бегать вполне весело! И это очень радует, потому как именно эти тормозные места и были основной причиной задержки релиза.

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

29
Ноя
2023

Добавил звуков

Сегодняшние фиксы:

  • добито управление воспроизведением фоновой музыки – глюки при рестарте игры обнаружил Alex Shestipaloff
  • добавил звуки рождения невидимых в данный момент Скелетов (сразу добавило похожести на геймплей оригинала)

Понемногу делаю локацию-пасхалку, из имеющихся спрайтов можно создавать всяческие штуки:

 

28
Ноя
2023

Чтоб тебя, Тэд из прошлого!

Отдал игру на бета-тест, уже есть результаты:

  • оказывается, я до сих пор не заблокировал СТОП!
  • при перезапуске игры теперь сохраняется статус вкл/выкл музыки и звуков

Так же добил прошлые баги:

  • +BUG: при выходе из второго в двери что-то мелькало и очки мигали
  • +BUG: приземление наискосок на замок – зависон
  • +BUG: урон от пули при уходе в телепорт
  • +BUG: пули летят сквозь стены?
  • +BUG: замок после открытия нарисовался ниже и потом при убийстве черепа все зависло

Три из них (“приземление наискосок на замок”,”замок нарисовался ниже”,”при выходе из второго…”) были следствием одной ошибки – переполнялся массив отложенного вывода элементов на второй экран. Такие комбо-действия как “открыл замок и тут же взял эликсир, а это вызвало срабатывание флага”,  вызывали больше изменений, чем планировалось. Увеличил место под массив.

Похоже, пришло время делать демо-режим, пасхалки и финальный мультик.

 

27
Ноя
2023

Звукобаги

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

  • +BUG: прыгун скрытый прыгает рано
  • +BUG: 08-03 высоко выпадает из черепа (левел 2)
  • +BUG: монета не должна получаться при ударе капли об голову
  • +BUG: при уходе в телепорт не Балбес должен нести урон

И занялся подчисткой звуковых багов:

  • +BUG: при выключенной фоновой музыке все равно должны играться музыкальные фрагменты типа “взятие Гнома”, “телепортация” и т.д.
  • +BUG: после перехода в новый левел сбрасывается флаг “music off”
  • +BUG: при воспроизведении фразы “взятие Гнома” нужно отключать все звуковые эффекты, пока фраза не доиграется, иначе музыка портится из-за совпадения каналов AY

В процессе отладки прошел игру от начала и до 4 уровня, по пути почти не встретив серьезных багов. Но набралось, конечно:

BUG: урон от пули при уходе в телепорт
BUG: капля бьет когда уже ушел
BUG: пули летят сквозь стены?
BUG: замок после открытия нарисовался ниже и потом при убийстве черепа все зависло
BUG: при выходе из второго в двери что-то мелькало и очки мигали
BUG: приземление наискосок на замок, когда одновременно срабатывает снятие замка, взятие эликсира и флага – зависон

При большом количестве действий на экране притормаживает, надо поискать где можно оптимизировать.

Но в целом игра уже работает. Надо отдать кому-нибудь на бета-тест 🙂

 

25
Ноя
2023

Внезапный индикатор

Попытался пройти игру и, конечно, список багов снова заколосился:

  • зависание при уроне – как оказалось, при переходе в новое окно не освобождались буферы фона для пуль, если пуля не закончила полет до смены окна
  • при уходе в дверь перехода на новый уровень применялись старые спрайты ухода
  • Шериф умудрился застрять в глыбе при выводе окна – на скрытых окнах глыбы не перемещаются, а при выводе окна Шериф как раз оказался впечатанным в такую глыбу. Редкий случай, однако. Мне повезло его отловить.

И хит дня – баг “зависание черт знает почему” при исчезании объекта с экрана. Вроде бы Шерифы давно уже успешно прибиваются глыбами, но тут вдруг такой случай вызвал зависание. Начал смотреть что не так… Оказалось, что при выводе запорчен фиктивный спрайт “пустота” размером 1х1, который я разместил с адреса 300. Ок, пытаюсь выяснить когда же он умудрился запортиться. Как оказалось он портится сразу при загрузке игрой своих файлов данных через EMT 36. Я и забыл, что EMT 36 использует область с адреса 300 не смотря на то, что ей указан другой адрес блока параметров. Как же это вообще работало раньше? А просто раньше файлы грузились без ошибки, а теперь вдруг при чтении через EMT 36 вылезла ошибка при загрузке файла HISUB.DAT, потому что его размер вылез за границу 40000. И EMT 36 гордо прописало байт 4 по адресу 301, в итоге ширина “спрайта” стала равна 2001 вместо 1.

Вот такой внезапный индикатор вылезания файла за границу 16К образовался.

 

24
Ноя
2023

Список багов уменьшается!

Сегодня был день в стиле “Фигаро тут, Фигаро там”, так что на ночь глядя прибил только два бага:

+BUG: при отключенной музыке нет паузы после game over
+BUG: скелет убит под землей?? boom был ниже!

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

BUG: мешок давит по новым координатам

Так что пора попробовать пройти игру и пополнить список приступать к финальной заставке, начальному демо и внедрению пасхалки!

Музыку!

23
Ноя
2023

А баги летят, баги…

Сегодняшние фиксы:

  • +BUG: если Балбес получал толчок во время удара, то проваливался
  • +BUG: скелет и шерифа нельзя было перепрыгнуть
  • +BUG: Шериф наносил урон, когда на экране он еще дрыгает ногами
  • +BUG: после урона от пули не было обновления “табло”
21
Ноя
2023

Хитрый баг

Во-первых, я сегодня быстро пофиксил баг, который мне казался весьма геморным – порча фона при выводе друг на друга летящих пуль и костей. Это оказалось как раз просто – просто “Тэд из прошлого” не сделал два отдельных цикла “взять все фоны под все пули и кости”, и только потом “вывести все пули и кости”, а объединил их в один цикл, где последующая кость брала себе фон с предыдущей пулей.

Во-вторых, внезапно при выходе из телепорта все накрылось медным тазом. Ага, думаю, новый глюк, чтоб его. Пробую снова выйти и снова держу клавишу влево – баг повторяется. Не держу – вроде сначала все ок, черепа завелись и побежали, а потом снова все зависло. Видимо, дело не в клавише. А в чем? А в том, что кнопка влево разворачивает Балбеса влево и спрайт начинает выводиться другой процедурой, которая уже выводит спрайт с поворотом. А если клавишу не жать, то черепа, добежав до правого края, тоже разворачиваются налево и тогда снова начинает работать “левая” процедура. Значит, дело в ней.

Ставлю точку остановки, смотрю что там – а там прямо в исполняемом коде какая-то чушь вместо одной из команд. Откуда-то взялся байт 367. Что за самомодифицирующийся код, который не заказывали? Отслеживаю момент, когда портится ячейка по этому адресу, начиная от телепорта, конечно же. Портится она при распаковке новой сцены. А чего на портится-то? А при применении списка изменений. При распаковке же сцена получается “свежая”, с еще не выпитыми эликсирами, несобранными Гномами и невзятыми ключами. Вот список изменений и применяется.

Оказалось, составляется он неоптимально – если открыт секрет и на экране (и в лабиринте) появился бонус, то в список изменений пишется адрес в лабиринте и код этого бонуса, естественно. А когда бонус взят? В список изменений ДОБАВЛЯЕТСЯ замена этого бонуса на ноль. Итоге, ДВЕ записи изменений одного и того же места лабиринта. Вот список и переполнился, стали “применяться” левые данные по левым адресам, в итоге пострадал уже исполняемый код.

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

19
Ноя
2023

Последние подарочки

Победил баги сегодня:

  • BUG: добавить звук огня в подвальных лабиринтах – добавил
  • BUG: подарки с жизнями и опытом не работают – теперь все работает, можно брать “мешки” с бонусами в виде очков, жизни, опыта
  • BUG: Балбес проваливается в 18-03, во втором через флаг в земле? – исправлено

Осталось:

BUG: кость + пуля = порча фона – это мне видится самым муторным
BUG: при отключенной музыке нет паузы после game over
BUG: нота сзади верхняя пролетела без урона
BUG: если Балбес получает толчок во время удара, то проваливается
BUG: мешок давит по новым координатам
BUG: скелет убит под землей?? boom был ниже!