Category: Разработка

18
Янв
2021

Байки из склепа

Начал делать потерю «жизни» стражником при падении его с большой высоты. Т.е. если стражника спихнуть вниз, то он должен потерять одну «жизнь» или вообще убиться, если высота была слишком большой. Сделал примерно, решил проверить как это работает. Нашел удобное место в 9-м лабиринте, иду к нему. По пути попадаются другие стражники, одного просто убил, другого запихнул в пилу. Прохожу обратно мимо «просто убитого», а он почему-то лежит в виде запиленного, хотя пилы рядом нет. Записал в список глюков, требующих исправления «не сохраняется тип трупа».  Иду дальше, попадается еще стражник. Скидываю его на шипы. Захожу в нужное окно — и все виснет. Хмм… Давненько такого не было.

Начинаю все снова. Иду, расправляюсь со стражниками, опять вижу, что надо исправить эту фигню с не тем видом трупов. В оригинале, кстати, трупы вообще просто исчезают, и я начинаю понимать почему. Но это потом, сначала надо понять, почему все виснет в том окне. Дохожу до проблемного окна — ничего не виснет. Интересно. С чем же был связан глюк? Неужто с новой обработкой падения стражника? Проверяю — вроде ничего там криминального.

Ок, иду снова. Убиваю стражников, скидываю одного на шипы, т.к. шипы глубоко внизу и, может быть, в процессе полета новая обработка падения портит память? Вроде осталось все в норме. Только вот эти трупы несовпадающего вида… Но это потом.

Дохожу до проблемного окна. Не вхожу в него, сохраняю состояние памяти, чтобы сравнить. И тут вижу, что внизу торчит башка стражника. А чего он там торчит? Там был убитый стражник, но почему он забит в землю? А потому что спрайт «нормального трупа» лежит на плите, а тот, что на шипах — он гораздо выше над плитой выводится… И так как адрес вывода этого «обычного трупа» сохранен, а «вид трупа» — нет, то тупо берется состояние последнего убитого стражника. А последний был на шипах. И вот «заколотый на шипах» стражник выведен в самом низу в полную высоту, вместо обычного спрайта, затирая память.

Т.е. всю дорогу я наблюдал причину того самого глюка с зависанием, который хотел исправить и это было именно отсутствие сохранения «типа трупа». Но оставлял на потом 🙂

В оригинале все нелогично — исчезают все трупы, кроме тех, что лежат на плитах, управляющих решетками. Потому что лежание на плите оставляет решетку открытой.

08
Янв
2021

Стражники 2021

Много исправлений в стражниках. Во-первых, это исправление самих алгоритмов боя, они стали более близки к оригиналу. Во-вторых, куча исправлений:

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

Но глюки еще есть, завтра продолжу охоту на них 🙂

 

 

25
Дек
2020

Стражники и баги

У стражников, конечно, еще полно багов и недоделок. Во-первых, стражник, падая вниз, не учитывает высоту и остается живым, если ему не попались внизу шипы. А в оригинале стражник теряет жизнь, если пролетел два этажа. И я даже видел, что стражник, теряя последнюю жизнь от падения, помирал. Во-вторых, в оригинальном принце невозможно получить двух стражников на экране одновременно, и для этого автор применил ухищрения. Как я не заманивал одного стражника в окно, где уже есть второй — он не хотел идти дальше. Знает, гад, что два стражника это перебор. У меня же пока стражник охотно бежит за принцем везде. Надо его отучать от этого. Во втором принце, кстати, стражники уже толпами бегают.

Сегодня исправил несколько хитрых глюков. Один состоял в том, что стражник мог нажимать плиту, открывающую решетку, сам при этом находясь в другом экране. Собственно, это правильно, почему бы ему не нажать, раз он на нее наступил. Только вот для стражника эта плита на границе окна имела координату Х=0, а в отображаемом окне Х этой плиты был равен 12. Это приводило к глюку. Второй глюк был как раз связан с несколькими стражниками в соседних окнах. Ну и еще мелочи исправил — для стражника не отображаются «пустые» значки жизней, как у принца.

Попытался переделать спрайты дворцовых уровней в другую палитру, но что-то ничего удобоваримого не получилось. Цвета получаются не менее вырвиглазные, чем сейчас.

Понемногу движемся 🙂

 

21
Дек
2020

Все фигуры расставлены

Как заявляли в сериале «Тьма», все фигуры расставлены. Все стражники поставлены на свои места, все заимели полагающееся количество «жизней» и смотрят в нужные стороны 🙂 Попутно обнаружилась, конечно, кучка багов. Теперь буду бороться с ними. Два уже поправил — принц не мог достать меч, стоя на краю пропасти (падал в эту самую пропасть) и мог висеть на уже упавшей плите, нагло болтая ногами. Обнаружились неверно управляемые решетки, а одна и вовсе отсутствовала.

Неприятная новость — похоже, утеряны спрайты дворцовой обстановки в виде отдельных файлов. Придется выковыривать их из уже собранного блока данных palace, чтобы перерисовать.

18
Дек
2020

И снова стражники

Научив принца заново ходить, возвращаемся к стражникам. В предыдущей версии формата лабиринтов обнаружилась проблема — нельзя было задать для каждого стражника в какую сторону он смотрит, вправо или влево. Я почему-то подумал, что достаточно будет стражника сразу разворачивать в сторону принца. Но потом оказалось, что стражник далеко не сразу разворачивается к принцу, а только когда он его видит или слышит шаги. Пришлось немного поменять формат лабиринта и добавить каждому стражнику такое поле. Заодно была решена проблема с разной высотой спрайтов разных стражников. Большинство из них одного «роста», но есть и длинные дылды и круглые толстые личности. А некоторые так вообще изначально являются грудой костей…

В первых двух лабиринтах стражники расставлены на своих местах и смотрят в свои стороны. Завтра продолжу.

17
Дек
2020

В башку сапог!

Сегодня сделал «в башку сапог» — падение плиты на голову.

Хотя в процессе было и  так:

Так-с, посмотрим на недавний список:

Что осталось сделать из обработки препятствий:

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

Неплохо! Переходим, значит, к этому:

  • новый формат данных о стражниках, т.к. все-таки надо изначально задавать в какую сторону смотрит каждый стражник
  • в 8-м лабиринте сразу ДВА разных по интеллекту стражника, а пока что подразумевался только один алгоритм боя на лабиринт
  • в третьем лабиринте скелет вернуть на место и сделать все, что связано с его подлым возникновением
  • распилить движение начала бега на два, т.к. принц в оригинале может остановиться быстрей, чем у нас
  • сделать «левитацию»
  • реализовать кровищу на пиле?
  • перерисовать спрайты дворцов для другой палитры
  • звук на AY
  • исправить маски обломков и арки

P.S.

12
Дек
2020

Долой спагетти!

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

Новая система работает шустрей и куда проще отлаживается. «Спагетти» канули в лету.

 

08
Дек
2020

Да будет звук!

Задолбавшись обучать принца скучной науке падать в ямы и не лезть на стены, я решил отвлечься и попробовать добавить фоновое воспроизведение музыки на музыкальном процессоре AY-3-8910. Добрые люди на канале БКшников снабдили меня инфой и всякими исходниками проигрывателей, но застрял я на процессе загрузки этого самого файла с музыкой в память СМК-512. Все файлы данных принца читались отлично на нулевую страницу СМК, а вот музыку надо было уже грузить на другую. И тут при загрузке стало все виснуть, заполнять память и экран всяким мусором. Причем каждый раз приколы были разные. Пару раз даже загрузилось! Я уже и на эмулятор грешил, и на прошивку СМК и совместимость режимов памяти с БК10/11. оказалось все проще — грузить данные с винта можно только в нулевую страницу, потому что на ней и сам контроллер HDD хранит свою служебную область. А подключаешь другие страницы — все накрывается медным тазом. Так что надо грузить данные в какую-то БКшную область памяти,  а потом уже вливать уже в СМК.

Поборов проблему с СМК, я начал пытаться воспроизвести в принце музыку. Сначала, конечно, принц издавал нечленораздельные звуки, но Владимир ‘KUVO’ Кутяков подсказал в чем проблема и помог встроить свой блок воспроизведения, за что ему огромное спасибо!

Вопрос «насколько затормозится принц, если в фоне играть музыку», который периодически меня мучал, теперь прояснен 🙂 Можно возвращаться к всяким пилам, ямам и шипам…