Сделал выключение звуков при переходе из окна в окно и при телепортации. Чтобы это не влияло на музыку — пришлось поизголяться. В конце выяснилось, что причиной большинства глюков было «гляжу в документацию, а вижу из пальцев конфигурацию». Почему-то глаз замылился и очищал я не те регистры AY. В итоге монеты зазвенели:
Сделал вывод шумов и обнаружил сразу кучу приколов, которых раньше не замечал. Оказалось, что водопады в оригинале шумят только тогда, когда музыка играет в одном канале — в «тревожных» местах. В обычной обстановке они бесшумны. Так делают оба эмулятора, на которых я гоняю оригинал. И это понятно, т.к. тупо не хватает каналов для вывода звуков событий типа «прыжок», шума водопада и двухканальной музыки. Раньше я этого не замечал, а теперь бесшумные водопады мне кажутся неестественными. Вот тут как раз пригодился бы 6-ти канальный вариант AY, там можно было бы эффекты выводить аж в 4 дополнительных канала, да еще и по стереопанораме раскидать их… У меня пока водопады шумят везде.
Сделал звуковой движок для одновременного проигрывания фоновой музыки и звуков игровых событий. Плеер звуков взят из Принца, слегка модифицирован для того, чтобы не прерывалась музыка. Система приоритетов звуков тоже та, что была сделана для Принца. Плеер музыки — от Kuvo, тоже слегка модифицирован. Пока что попробовал на звуках, не содержащих шума. С ними, думаю, придется повозиться. Хотел сделать вывод звуков на второй AY, но в эмуляторе Gid’a работа двух AY пока не реализована.
Сделал то, что давно надо было сделать — перегруппировал коды элементов обстановки, что дало ускорение в определении элементов, на которые можно опираться героям (земля). Теперь этот факт устанавливается всего двумя сравнениями, что тоже дало ускорение. Конечно это потащило за собой смену кодировки всего лабиринта, надо теперь переделать кучу проверок. Но стало еще немного шустрее 🙂
Понемногу реализую идеи оптимизации, которые крутилися в голове во время отпуска. Переделал вывод спрайта шерифа, которого приходится красить на лету в разные цвета. Все это дало эффект и не может не радовать.
Занимаюсь оптимизацией кода и повышением скорости работы движка. Появились идеи, как ускорить некоторые вещи. Некоторые из них, кстати, можно было применить и в Принце. Делаю замеры времени исполнения отдельных подпрограмм и основного цикла по встроенному в процессор таймеру. Понемногу ускоряется 🙂
Долго искал причину глюков в передвижении монет по лабиринту. Проявлялись они хитро — вроде все работает, монеты создаются, а потом раз и за монетой потянулся запорченный фон. Или монеты просто через какое-то время переставали создаваться. Капли капают, а монет нет. Или монеты исчезали при первом же ударе об стену, вместо второго. У меня уже начал дергаться глаз! Оказалось, причина была не одна, а целая куча — начиная от порчи регистра в подпрограмме копирования фона монеты, заканчивая идеологией «динамического буфера фона под монеты». Но на данный момент все успешно починено:
Свежие комментарии