БК-11М в 21м веке

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: после урона от пули не было обновления «табло»
22
Ноя
2023

Продолжаю битву с багами

Исправил вчерашний баг с переполнением списка изменений. Было два метода решения:

  • красивый метод — оптимизировать само пополнение списка, т.е. искать адрес среди внесенных и править имеющуюся запись
  • тупой — увеличить место под сам список, чтобы хватило в любом случае

Я, конечно, пошел первым путем — оптимизировал работу со списком. И увеличил место под сам список.

А также исправлено:

+BUG: переполнение списка мигающих бонусов (оказалось, их может быть и больше 5 на один уровень)
+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 был ниже!