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

04
Ноя
2020

12 лабиринт

Нашел в чем была проблема с новым 12м лабиринтом. Последние два слова в каждом лабиринте представляют собой адрес в экране, куда вывести принца после входа и слово состояния принца (движение), которое он должен получить при входе. Т.к. в некоторые лабиринты принц «впадает» (как в 7-й), то это первое движение вовсе не везде одинаково. К тому же, после входа принц смотрит в определенную сторону, а вовсе не в одну и ту же. Все это есть в слове состояния принца. И вот это самое слово состояния и адрес вывода при сохранении лабиринта из редактора тупо обнулялись! Видимо тогда нам было лень делать механизм назначения движения и мы решили, что впишем от руки потом, лабиринтов-то всего 12. И вписали, что характерно. А вот я об этом забыл 🙂 Ну, вписал и сейчас, не проблема 🙂

Лабиринт заработал. Заодно проверил возможность пройти череду прыжков в 12-м, это весьма сложное место и в оригинале, с нормальной клавиатурой. А уж на БК с ее «особенностями» и подавно. Мне было интересно, реально ли пропрыгать этот каскад в нашем принце. Оказалось, что реально, по крайней мере на эмуляторе БК. Но и глюк нашелся, куда без этого: если при смене экрана принц бежит по обваливающейся плите, то он сразу падает. Будем исправлять 🙂

P.S. проблему с плитой и провалом пофиксил, но ролик получился эпичный ))

04
Ноя
2020

Хитрый глюк

Проверял срабатывание мультика с мышью в 8м лабиринте, когда она нажимает плиту. Нашел кучу глюков, но в итоге мышь-таки выбежала. Но самый прикол был потом — я добежал до выхода и увидел, что дверь ЗАКРЫВАЕТСЯ! Типа слишком долго провозился, выход закрыт )) Последствие переделки
механизма решеток 🙂

 

04
Ноя
2020

12 лабиринт, продолжение

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

03
Ноя
2020

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

Вспоминаю, как мы делали звуки для БК, которые там в принце сейчас звучат на спикере. Я оригинального принца загнал в какой-то отладчик на PC, уж не помню какой, нашел там подпрограмму вывода звука на спикер. Вижу, что она пихает байты в какой-то порт (уж не помню какой). Я заменил номер порта на порт принтера, а потом включил на принтере (матричный Epson FX-1000 чтоли) режим, где он печатал дамп поступающих симоволов, а не сам текст. Потом бегал по лабринтам, ронял плиты, дрался со стражниками, стоял возле шипов и фрез, а звук весь печатался на принтере 🙂
Эти дампы потом вколотили на БК и Женя Пашигоров придумал как их вывести через динамик. И зазвучали они очень похоже 🙂

03
Ноя
2020

Как все начиналось

Начало истории описал в своей статье Евгений Пашигоров, вместе с которым мы и делали Принца с самого начала. Собственно, весь движок принца и был написан им, я занимался графикой и потом уже стал делать стражников, оживлять лабиринт с помощью решеток, фрез и прочего «действующего оборудования» лабиринтов. Он же и разработал все инструменты, с помощью которых стало возможно автоматически собирать все модули программы из кучи исходников и объектников, собирать из спрайтов движения, преобразовывать графику в объектные модули и многое другое. Без Жени никакого Принца никогда бы не было 🙂

А вот так выглядел «перенос графики» с PC на БК.

Я распечатывал на работе кучу скринов с фазами движения и потом рисовал их на БК по этим бумажкам, попутно преобразовывая размеры спрайтов под размеры экрана БК, т.к. если графику просто скопировать, то она будет выглядеть сжатой по вертикали. Из всех этих спрайтов потом еще надо было сделать движения, поделенные на логические части, чтобы можно было сменить бег на остановку, падение, разворот и все это выглядело бы органично. Та еще работка 🙂 Так что, пока Женя писал движок, я клепал все эти спрайты… Часто мы засиживались до 4х часов утра, офигенский был энтузиазм 🙂

 

03
Ноя
2020

Средства разработки

Разработку я продолжаю «родными» БКшными средствами — ассемблер micro1103 (модифицированный Евгением Пашигоровым под работу с bat-файлами), редактор текста Vortex, графредактор GRED V003. Все это под операционкой ANDOS и работает на эмуляторе gid. Железная БК11М с контроллером СМК-512 у меня тоже есть в наличии, но пока что лежит в шкафу 🙂

Так что все спрайты я рисую с помощью БКшного графредактора, без всяких этих ваших фотошопов, и выглядит это вот так:

03
Ноя
2020

12 лабиринт

При отладке финального боя в 12 лабиринте я сразу увидел, что с лабиринтом что-то не так. При падении вниз (12м это часто) возродился самый старый глюк — зависание при влете в новое окно внизу. Сразу стало ясно, что лабиринт почему-то портится, раньше так бывало при пролете падающих плит. Потом буферы фона иногда залезали в лабиринт. Но теперь-то памяти валом, все буферы давно в расширенном ОЗУ СМК-512! Загрузил лабиринт в редактор, а там кошмар в нижней половине лабиринта, хаос из кувшинов, пил и прочих элементов. При этом в верхней части все ок, где принц бьется с двойником. Взял старую версию лабиринта, вкатил в нее таблицы мультиков (они хранятся в конце файла лабиринта, чтобы не грузить их отдельно), гружу в принца — снова зависание. Открываю в редакторе — снова хаос. Чтобы это значило? А значило это просто то, что 12 лабиринт оказался слишком большим и вылезал в область мультиков. Таким образом, вкатывая в него таблицы мультфильмов, я сам его и портил. Придется разделять 12й лабиринт на две части. Собственно, в оригинальном принце это тоже так и есть — после битвы с двойником принц возрождается уже в другой половине лабиринта, а не в самом начале. Самое смешное, что теперь как раз технически будет 13 лабиринтов, как и утверждал SashaPont на канале БК0010/11М World в споре о том, сколько лабиринтов в Принце 🙂

Сделал карту 12 уровня, буду пилить на два 🙂

03
Ноя
2020

Финальный бой

На данный момент я сделал сцену финального боя принца с двойником. Двойник, конечно, работает на движке стражника, т.к. должен драться с принцем. Но у стражников нет движений типа «шаг вперед без меча», «достать меч», «убрать меч», «бежать». Потому двойник, это не совсем стражник 🙂 В свое время (в давние времена) мной был написан механизм воспроизведения «мультиков», который воспроизводил движения любого объекта, описанного в игре с помощью таблиц движений. Это и сам принц, и стражники и мышь в 8-м лабиринте. С помощью этих «мультиков» и выводится двойник, выпрыгивающий из зеркала, наступающий на плиту в 6м, выпивающий кувшин в 5м лабиринтах. Но это были просто мультики, которые воспроизводились без оглядки на обстановку, ямы, принца. А в финальном бою надо было скрестить эти мультики с реальными действиями двойника в ответ на действия принца, к тому же двойник должен еще и на обстановку реагировать (упасть в яму, если она ему попадется), разворачиваться в сторону принца и т.д. К тому же, мультики воспроизводились тупо с заданного места в экране, а тут двойник может начать складывать меч в любом месте, смотря где оказался в ходе боя. Потому пришлось поломать голову, но все получилось, ура! 🙂

03
Ноя
2020

Лучше поздно, чем никогда :)

Проект «Принц Персии» для БК11М довольно древний 🙂 Начат он был в аж 92 году, большая часть была сделана к 98 году, наверное. Потом проект заглох и снова продолжился в 2019 году. Здесь я буду писать как продвигается дело. Во-первых для себя, во-вторых может кому будет интересно.