Category: Баги

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 был ниже!

 

18
Ноя
2023

Снова Тэд из будущего

Очередной прикол из серии «пусть об этом думает Тэд из будущего» — оказывается, после определения того, что Шериф верхом на глыбе доехал до потолка и должен быть раздавлен…. ничего не делается. Пришлось доделать.

Сегодня исправлено:

+BUG: шерифа давит мешком об потолок, но не давит. Потому что там и нет действия!
+BUG: скелет не запрыгивает? сцена 11-02, начало GOON DOCKS
+BUG: наискосок скелет летит странно
+BUG: увеличить угол нот, увеличить их скорость
+BUG: ноты при вопле выводить ближе
+BUG: скелет после появления в воздухе не сразу проваливается

В итоге Скелет перестал летать «странно», теперь он сразу падает, если возродился в воздухе (то самое убийство нечисти в полете), а также перестал исчезать, когда должен был запрыгнуть на уровень выше (там не было вообще такого кода движения, но кто их считает).

Что осталось исправить:

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

17
Ноя
2023

Шериф и прерванный полет

Начал я сегодня очередной раунд борьбы с багами. Часть поборол:

+BUG: для призрака координаты пересчитываются раз в пятилетку
+BUG: флаг Призрака не возвращается после его ликвидации
+BUG: в золотом нет призрака?
+BUG: призрак не поражает и в конце он красный

Потом взялся за это:

BUG: скелет в прыжке 137070 не вызывает FIGHT?

Это я заметил, когда пытался стукнуть прыгающего Скелета во время его пребывания в воздухе. И Скелет меня проигнорировал. Потом я проверил это на Шерифах и выяснил, что когда ноги Шерифа выше уровня земли, он игнорирует Балбеса и его удары. Соответствующий комментарий даже был в коде. То ли это было «пусть об этом думает Тэд из будущего», то ли я думал, что в прыжках нечисть сбивать будет только маньяк, т.к. там велика вероятность самому огрести. Попробовал я сделать это на оригинальной игре MSX и открыл для себя новость — оказывается, если поймать Шерифа во время полета и стукнуть, то он падает вниз, но после падения не бежит себе дальше, а именно валяется и дрыгает ногами. Т.е. эта ситуация была авторами предусмотрена. Мне и в голову не приходило охотиться на Шерифов и бить их на взлете — я старался держаться от них подальше. Ну… что делать, пришлось внедрять и мне такой же трюк. Теперь Шерифа можно бить в полете. Вот так это выглядит:

В процессе отладки этого механизма я поймал эпичный скриншот, когда за мной гонялись сразу ДВА Шерифа:

 

Список оставшихся багов (он пополнился):

BUG: Балбес проваливается в 18-03, во втором черем флаг в земле?
BUG: кость + пуля = порча фона
BUG: скелет не запрыгивает? сцена 11-02, начало GOON DOCKS
BUG: подарки с жизнями и опытом не работают
BUG: при отключенной музыке нет паузы после game over
BUG: ноты при вопле выводить ближе
BUG: кости вообще не набиваются!
BUG: нота сзади верхняя пролетела без урона
BUG: если Балбес получает толчок во время удара, то проваливается

16
Ноя
2023

Забытые баги

Почему-то я потерял половину списка багов и сижу радуюсь, что мало осталось работы. А вот фиг там! Но сегодня неплохо пофиксил:

  • BUG: при спуске по лиане клавиша вниз — сделал наконец-то отмену автоповтора при слезании, а то Балбес не останавливался на этаже, если находил сразу же лиану вниз, а продолжал спускаться уже по ней
  • BUG: при пересечении экрана вниз кто-то сталкивается с Балбесом — а точнее, если голова Балбеса была в одном окне, а тело в другом, то нижняя координата считалась неверно. И потому он «занимал» весь экран с Y=0 по Y=25 и первый попавшийся враг в этом диапазоне наносил урон
  • BUG: иногда при сработке щита звук урона — да, при срабатывании щита не сбрасывался флаг и тут же назначался общий звук урона
  • BUG: при наколачивании нечисти удар в прыжке не считается? — удар считался, но набитая нечисть подсчитывалась только при ударе на земле
  • BUG: при накоплении мышь и череп одно и тоже?? — была кривая проверка

Что осталось на данный момент:

BUG: в золотом нет призрака?
BUG: Балбес проваливается в 18-03, во втором через флаг в земле?
BUG: кость + пуля = порча фона
BUG: скелет не запрыгивает? сцена 11-02, начало GOON DOCKS
BUG: подарки с жизнями и опытом не работают
BUG: при отключенной музыке нет паузы после game over
BUG: ноты при вопле выводить ближе