Что касается щелчков при слайдах, то ASC рассказывал мне еще об одной особенности AY, которую он обнаружил и поборол в своем плеере ASM, и о которой многие не знают.
При выводе таблицы чисел в регистры AY даже размотанным циклом, новые значения попадают в регистры неодновременно. И если имеется незначительное изменение частоты тона в районе границы байта (FF->100 или 100->FF и т.д.) из-за неодновременности записи двух байт в регистры частоты тона, то во времени это будет выглядеть так:
время Reg0 Reg1
0 FF 00
1 00 00
2 00 01
То есть на короткое время оба регистра частоты тона будут иметь значение 00, что соответствует очень высокой частоте. Поэтому в процессе переключения генератора с частоты FF на частоту 100 будет сгенерировано несколько импульсов на выходе, что соответствует ощутимому на слух щелчку. Проверить очень просто, если сделать в любом (кроме ASM) муз. редакторе слайд от низких частот к высоким или наоборот, так чтобы частота генератора перешла через границу байта.
Просто изменение порядка вывода в регистры AY не решает эту проблему, так как слайд в другом направлении снова создаст вышеописанную ситуацию и вызовет щелчок. Код плеера ASM я не смотрел и точно не знаю, как ASC ее решил, но с его слов, порядок записи двух байт в регистры AY определяется им в каждом случае индивидуально, учитывая старое и новое значение.
Я тут кое-что еще придумал.
Сбросить счетчики AY точно может и нельзя, но приблизительно можно.
Если я правильно понимаю архитектуру AY, то там декрементирующие счетчики, в которые загружаются константы из регистров периода каждый раз, когда эти счетчики досчитывают до нуля.
Таким образом, если запрограммировать AY на воспроизведение максимально возможной частоты, то состояние счетчиков в любой момент времени будет предсказуемо в каких-то узких пределах. И если в этот момент записать в регистры периода другие числа, то счетчики начнут считать с более-менее предсказуемого исходного положения. Такой предсказуемости может быть достаточно для реализации спецэффектов. Можно также заблокировать прохождение высокой частоты на выход путем установки соответствующих битов в регистре 7.
Хм... Что-то тут не то. Нужно провести эксперименты, однозначно. ASC измерял, вероятнее, всего, AY-3-8912 (у него был фирменный ZX Spectrum +2). Не исключено, что именно тот AY отличается в своем поведении от 8910/YM.
Да ... Я уже думал об этом ... Но для этого нужно записать в регистр тона "0", потом наверняка дождаться окончания, звучания предыдущего тона, потом уже устанавливать новое значение ... Это всё приведёт к большим проблемам ...
Хорогая статья ... Но она так же говорит о том, что генератор тона не сбрасывается, а сбрасывается лишь огибающая.
Сейчас сделаю програмку ... Сброшу в TRD, сможешь перевести на диск и запустить на реальном Speccy ? У тебя пентагон ?
AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
----------------------------------------------
Пентагон или Реал, - всё равно ... Вот програмка прикреплена ... При запуске, чёрный экран, это она будет определять пентагон или что-то другое.
Управление:
"1". 16 раз за инт частота отличается в два раза за каждые 1/8 инта.
"2". 16 раз за инт, частота всегда одна.
"3". 1 раз за инт, частота одна.
Желательно записать звук в ежиме "1". Если режим "2" и "3" будут отличаться по звучанию, значит счётчик сбрасывается.
AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.
готов спорить, что не сбрасывается он.
Еще актуально?
По десять секунд на каждую кнопку сойдет?
Вроде как 2 и 3 не отличаются.
Profi (времянки пентокрыла), AY38912A/P (Microchip'овский), каналы замешаны в моно, сжимать не стал: http://narod.ru/disk/13033750000/ay_test1.rar.html
YM есть на скорпе, но он не в очень рабочем состоянии (все провода отпаяны, думаю как бы грамотнее оформить все в разъемах)
Последний раз редактировалось molodcov_alex; 11.09.2009 в 17:35.
ZX Spectrum forever!
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)