Category: Баги

27
Апр
2022

Оптимизация движка

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

24
Апр
2022

Кидание костями

Реализовал кидание костями. Попутно выяснилось, что скелет не совсем правильно ходил — слишком быстро. Это стало понятно, когда он кинул кость и, побежав, догнал ее в полете. Мне и раньше казалось, что он как-то неправильно ногами перебирает, теперь это исправлено. Займемся нотами!

07
Апр
2022

Правим баги

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

Между окнами еще бродят скелеты, но для них будет использоваться тот же самый механизм. Остальная нечисть вроде бы живет в пределах одного окна. Хотя, там есть еще Призрак, который вроде бы летает между окнами. Но тому вообще на все плевать, в том числе на стены.

03
Апр
2022

Прогуливающийся шериф

Шериф научился уходить в соседние окна. Пока что делает он это криво, иногда сквозь стены. Заодно он продемонстрировал умение кататься на глыбе. Это логично, ведь он пользуется подпрограммами Балбеса. Однако, есть какой-то глюк, который вызывает резкое падение скорости, когда шериф на экране одновременно с черепами. Будем искать…

16
Мар
2022

Обновление релиза Prince of Persia

Исправлен приоритет при фехтовании: если Принц и стражник одновременно бьют, то урон получает стражник. Раньше приоритет был у стражника. Теперь все как в оригинале и шансов победить стало больше. Релиз обновлен.

22
Окт
2021

Релиз обновлен

Новый релиз, содержит фиксы и фичи:

  • BUG: по АР2+R сбрасывалось заданное управление
  • BUG: ждать конца звука перед музыкой
  • BUG: можно было хитро спрыгнуть без потери жизни
  • BUG: иногда пролетал сквозь решетку

Фичи:

  • сделано обнаружение отсутствия SMK и вывод надписи об этом
  • добавлена возможность записи игры

О записи подробнее.  Хоть я и прошел в свое время Принца без какой-либо записи, оказывается возможность такая была. И она описана в оригинальной доке:

Так я и реализовал ее:

  • запись доступна только начиная с 4 уровня
  • для записи нужно нажать клавиши АР2+W, при этом текущий лабиринт будет перезапущен
  • для чтения нужно во время начальной заставки нажать АР2+L, игра начнется с начала записанного уровня

 

06
Окт
2021

Добиваем баги

Фиксим последние (надеюсь) баги:

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

 

04
Окт
2021

Автодетект

Сделал автоопределение среды, в которой запущен Принц — эмулятор или реальная БК. Для эмулятора и железа используются разные задержки для смены палитр на лету и переключения экранов. Пришлось повозиться, т.к. процедура «записать в 177702 — прочитать из 177702» почему-то не всегда вызывает прерывание по вектору 4 на моей БК. Особо разбираться не стал, т.к. записанное значение из этого регистра все-таки не читается, а в эмуляторе читается. От этого факта и пляшем. Попутно пофикшены баги:

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