Category: Prince of Persia

02
Апр
2021

А вот и музыку подвезли

Набрал музон выпивания большого кувшина в Vortex Tracker, пытаясь сделать его похожим на оригинальный. Затем сохранил его в формате pt3. Потом преобразовал его в PackedPSG с помощью утилит Владимира ‘KUVO’ Кутякова, за что ему огромное мерси. Потом взял исходник его же плеера psgplay, переписал его в формате micro1103, развернув макросы. Скомпилировал на БК. Прицепил к полученному плееру файл музона и вот результат:

 

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

 

 

01
Апр
2021

Стражники — это не только ценный мех

Пришло время убрать лишнее смещение стражника при блоке, которым я их пихал в пропасти и шипы для отладки. Шаг я убрал и тут поломался цикл «удар-блок-удар» которым можно было бесконечно обмениваться с крутыми стражниками. Я начал смотреть почему и выяснилось, что принц не всегда делает после блока шаг назад в оригинале, а только если за его блоком не следует удар. Сделал так же. Цикл «удар-блок-удар» начал получаться, НО ТОЛЬКО ОДИН РАЗ, на второй раз стражник почему-то не ставил блок и пропускал удар. Нашел две ошибки в программе определения расстояния между принцем и стражником. Стражник, оказывается, после первого блока оказывался ближе, чем раньше, и получал команду «делай шаг назад, принц слишком близко», не смотря на то, что принц наносил удар и потому и был близко, собственно. К тому же, решив проверить как ведет себя стражник 8-го лабиринта в оригинале, я с удивлением обнаружил, что он часто и вовсе не вступает в этот цикл «удар-блок-удар», а может просто назад отойти. И потому его можно там скинуть в пропасть. А у меня его невозможно было назад заставить идти, он сам всегда принца уталкивал в яму. Я добавил стражнику случайных чисел и теперь он иногда отскакивает. И стало очень похоже на оригинальное поведение 🙂 Ну, а визирь в итоге получил весь арсенал и вообще окрутел ))

Пофикшены баги:

  • приседание на шипах вело к смерти
  • выталкивание за решетку при прыжке спиной к решетке
  • двойник снова  умеет падать в пропасти
  • убрано впадение не в то окно в начале уровня 1 и 8
  • отталкивание от стены при фехтовании починено
  • пила делалась внезапно кровавой. Оказалось, она «пилила» стражника в соседнем окне, лежащего на этом же месте!

Yellow Rabbit взялся за ежедневное тестирование принца, это отлично. Два первых бага из списка нашел именно он.

30
Мар
2021

Двойник починен

Хотел сегодня заняться встраиванием музыки, и даже набрал музон выпивания большого кувшина, но вдруг выяснилось, что поломан бой с двойником в 12-м лабиринте. Получилось так из-за изменения места спрайтов двойника в ОЗУ СМК. А страницы-то в таблицах были указаны старые. Однако, разобраться в этом было не так просто. Заодно сделал нормальный вывод потайных плит, которые были поломаны аж при замене подпрограммы определения препятствий. Ну и добавил от себя маленькую ловушку, чтобы жизнь медом не казалась ))

Весь день на это и ушел. Займусь музонами завтра, пока на работе есть передышка с концертами )

 

28
Мар
2021

Мелкими шагами Боб движется…

Сегодня была куча работы, и завтра тоже будет. Но из принципа исправил пару глюков в принце, хоть понемногу но продвигаться надо 🙂

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

26
Мар
2021

Стерео!

Два дня правил звуки, расставил вызовы событий, в которых временно вручную указывал канал для воспроизведения (левый/центр/правый). Все звучало. И вот пришло время все-таки написать процедуру автоматического определения канала для звука. И тут мне в голову пришло, что все данные у меня уже есть — в любой точке вызова звука всегда известен адрес в экране того объекта, который издает звук. Просто надо передать его подпрограмме добавления нового звука в очередь, а та сама вычислит в какой канал этот звук разместить. Пришлось снова пройтись по всем исходникам и поменять при вызове звука номер канала на адрес в экране. И, конечно, добавить вычисление канала в саму подпрограмму добавления звука в очередь. И все зазвучало!

26
Мар
2021

Интересные моменты

 

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

 

Мне пока не удалось получить такие звуки для AY. Тем более как-то их перемешивать. Завтра помучаю этот вопрос.

Alexander «Sandro» Tishin подсказал, что в первом лабиринте существует скрытый способ пройти мимо стражника без меча. Оказалось, что у меня этот вариант был невозможен — отсутствовала одна падающая плита. Поставил плиту, теперь все стало возможно.

Вот такие особенности вдруг выясняются. Раньше на них и внимания не обращал никогда.

23
Мар
2021

Долой очереди!

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

Пока что выглядит так:

22
Мар
2021

Вас тут не стояло

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

21
Мар
2021

Звуковой движок

Сегодня сделал часть движка, ответственного за звуки. Он принимает «заказы» на проигрывание звуков событий в определенном канале (левом, правом, среднем), ставит их в три независимые очереди и потом играет их по таймеру. Накатал небольшую программу проверки, которая сыпала события, движок успешно все переварил. Вылез один хитрый баг, из-за которого именно звук встающего скелета не воспроизводился в правом канале. Как всегда, после исправления удивился как вообще что-то игралось))

Теперь надо совместить звуки с музыкой.