при спрыгивании с больших колонн нужно другое смещение, чем при спрыгивании со стены из висячего положения (баг оказался глубинным, я правил его два дня!)
при приземлении с ударом об решетку не сбрасывался высотомер
обнаружилось, что при выходе Принца из лабиринта вдруг исчезает труп стражника, если он валяется рядом
Сделал новую динамическую задержку, по внутреннему таймеру. Старые расчеты размеров спрайтов и т.д. выброшены, теперь все считается автоматом, чтобы все было равномерно. Принц, конечно, может бежать и быстрее, но какой в этом смысл, если в нагруженных моментах он будет тормозить? Примерно подобрал задержку по PC-шному варианту Принца:
Начал разбираться с динамической задержкой и просто офигел )) Оказывается, она все-таки все еще встроена, с тех самых 90-х. И я вспомнил, как именно Женя ее реализовал – задержка вычисляется в зависимости от размера спрайта Принца. Женя тогда делал движок, который выводил только спрайты самого Принца. В каждом движении куча спрайтов и все они разных размеров. Чтобы фазы менялись с одной скоростью, Женя сделал расчет задержки на каждом такте именно относительно размера только что выведенного спрайта Принца. Так это все дело и осталось. Но потом-то добавились другие двигающиеся штуки – всякие там пилы, шипы, решетки и самое страшное – второй персонаж, стражник! Все это, конечно, внесло дополнительные тормоза, а вот их никто не учитывал и не вычитал из посчитанной задержки, которая продолжала вноситься лишь на базе размера спрайта Принца.
Выкинув задержку вообще (для теста) я получил вот такую скорость работы движка:
Сделал пример для фехтования. В начале ролика записано как работало раньше, потом идет запись работы опять без какой-либо задержки. Фехтование-то, оказывается, может быть куда живее!
Оказывается, был запас по скорости-то! Теперь осталось выровнять все с помощью новой динамической задержки, по таймеру.
А также, сегодня я исправил самый злостный глюк, который меня уже год бесил, наверное 🙂 Иногда, когда Принц падал вместе с двумя плитами одновременно, на экране оставался мусор. И теперь это пофикшено! Сегодня определенно удачный день.
Сделал настройку управления от клавиатуры по АР2+K. По АР2+J можно задать и джойстик. Если я еще и сделаю выбор устройства вывода звука (AY или пищалка), то наверное стоит сделать общее меню по клавише ПОВТ 🙂 Да, на видео видна новая “подвальная” решетка в интерьере 🙂
Перекрасил пилу в дворцовых лабиринтах, чтобы выделялась:
Так как скопилось много элементов, которые заменяются при переходах из подвала во дворец и обратно (шипы, пилы, решетки), пришлось их вынести в два отдельных массива и заменять при загрузке нового лабиринта. Раньше они были везде одинаковые и смены не требовалось.
К чему я подошел в итоге – собственно, все глобальное сделано, оказывается. Осталось внедрить пасхалки и поправить пару известных глюков. И все, как ни странно 🙂
Ах да, я ж решил добавить возможность конфигурировать управление от клавиатуры. Еще вопрос о выводе звука на спикер – не знаю, стоит ли восстанавливать его? Жаль конечно, наши однобитные оцифровки для спикера, которые мы перегоняли с PC с помощью принтера. Но во-первых, тогда еще и музыку надо делать на спикер, а она ведь по таймеру играется. А во-вторых некоторых звуков там не хватает, а я уже и не помню как мы их преобразовывали для воспроизведения на БК. Женя писал программу для этого и я ее даже нашел, но что-то неясно как ей пользоваться. Инструкции, как водится, нет. Нам ведь тогда “итак было все понятно”.
Новые спрайты были нужны чтобы решить проблему с белым цветом. Принц бегает в белой одежде и при смене палитры, она должна была остаться белой. В тоже время, обстановка дворцов значительно отличается от уровней подвалов и подземелий, она значительно ярче и роскошней. Это логично, собственно. Но при этом цвета не должны быть вырвиглазными. Добавочная проблема еще и в том, что Принц должен быть достаточно контрастен на этом ярком фоне. Ноги-руки и одежда не должны сливаться с полом или боковыми стенами. Потому мне эти дворцы давно покоя не давали. И вот, вроде бы, мне удалось нарисовать обстановку, которая меня лично устроила и при этом примерно похожа на VGA-вариант оригинального Принца на PC.
Попутно я немного доработал спрайты решетки. Помимо добавленных теней и бликов, теперь решеток два вида – для дворца и для подвала. Решетка была такой:
Решил все же отказаться от полноэкранного мигания. Во-первых, для подготовки такого мигания приходится весь скрытый экран заливать белым или красным, а он вообще-то используется. Т.е. надо содержимое скрытого экрана сохранить, потом залить его белым/красным, потом помигать экранами, а потом еще и восстановить содержимое скрытого экрана. Получается ощутимая задержка перед срабатыванием эффекта. Во-вторых, во время такого мигания не может работать движок игры, т.к. скрытый экран занят. Не движутся факелы во время мигания, не двигаются решетки. Это, может, никто и не заметит, но неприятно. С палитрами таких проблем нет – они включаются по таймеру. Все движется, никаких затыков для подготовки. Пусть будут палитры. Выглядит это так:
И еще сегодня я сделал-таки вывод звука “пустого удара мечом” и стражнику. В оригинале и для принца и для стражника используется один и тот же звук, но мне показалось это однообразным. Завтра попробую стражнику выдать немного другой звучок.
YellowRabbit подсказал, как сделать мигание экраном более скоростным, чем я делал это до этого. Я все извращался с инверсией, а он предложил залить один экран полностью белым и переключать видимые экраны. Таким образом, мигание будет наиболее скоростным. Как мне это раньше в голову не пришло? Я все заморачивался тем, что в оригинале мигает только черный фон, сами спрайты обстановки остаются неизменными. На БК такой фокус провернуть непросто. Ну вот брат подсказал подходящий вариант. Заодно попробовал и вариант с красным миганием, для случаев, когда выпивается яд. Bandicam отказался правильно захватить кадры мигания, он их пропустил. Пришлось захватывать самим эмулятором, а это там не очень удобно, да и звук пишется отдельно, скрещивай потом этих ужей с ежами… В итоге мигание все равно выглядит не так, как в игре. Потому видео удалил )
Свежие комментарии