Я решил создать эту тему для освещения кое-какой своей работы на ZX. Надеюсь, на уже проделанном не остановлюсь.
1. На ZX до недавнего времени существовала проблема правильного проигрывания произвольного модуля PT3. За все время существования PT3 было семь нотных таблиц, две таблицы громкости, сменилась команда портаменто. Казалось бы, старые модули можно играть старыми плеерами и проблем не будет, но когда мы начинаем анализировать ошибки, найденные и испраленные MMCM'ом и Alone Coder'ом, становится понятно, что это не выход. А при проигрывании самыми последними версиями плеера старых модулей, всплывают и другие проблемы (не считая вышеперечисленных). Например, попробуйте проиграть без перекомпиляции Chuta.pt3 Мигеля в BestView. В общем, надоело мне наблюдать эту печальную картину, и я написал свой универсальный плеер. В пике на сложном модуле он тратит 9500 тактов, размер меньше 1,6 кб, ошибок в проигрывании за полгода тестирования не замечено. http://bulba.at.kz/VTIIPT3ZXPlayer.7z
2. Вчера вечером вдруг пришла мысль, что за последние несколько лет уже много раз отсылал людей к исходникам Ay_Emul по поводу подсчета продолжительности PT3 модуля на ZX. А результата-то нет! То ли всем нужен уже готовый результат, то ли не так оно и нужно вообще, но тем не менее держите результат нескольких часов работы: http://bulba.at.kz/PT3Time.7z Данный исходник переделан из вышеуказанного плеера методом его упрощения. Алгоритм такой же как и в Ay_Emul (функция GetTime). Идея такова - играем модуль с максимально возможной скоростью до момента перехода на цикл. Вопреки ожиданиям, метод даже на Z80 работает очень быстро (в среднем доли секунды, на очень длинных модулях типа 'Spleen' Nik'о - около секунды). Оптимизации пока никакой нет, но уже сейчас все достаточно симпатично - около 300 байт. Для скорости пришлось убрать проверки целостности модуля и защиту от зацикливания на сбойных данных.
Кому интересна эта тема, пишите. У меня еще много идей такого рода, было бы время. Например, можно сделать новые плееры для PT2, ASM и т.д. Тем более, что в некоторых из них ошибки так до сих пор и не исправлены и вряд ли кто будет исправлять. А мне проще написать свое с нуля