Category: Prince of Persia

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 году. Здесь я буду писать как продвигается дело. Во-первых для себя, во-вторых может кому будет интересно.