Возможностей мало, сложно и тормозно.
В зависимости от сложности или простоты эффектов можно 1) работать с регистрами AY непосредственно. Там три-четыре записи в регистры - и AY уже звучит. 2) использовать проигрыватель от какого-нибудь треккера, в треккере создать нужные эффекты.
Способ 2) более универсальный и удобный, 1) годится только в случае совсем уж простых эффектов.
О плеере эффетов от Shiru не знал, но если такой существует - то конечно надо пользоваться. Shiru гений в области программирования звука на Спектруме, на бипере такие вещи вытворяет, что даже у меня челюсть отвисает.
Ну в оригинальном сообщении речь шла про любые процедуры из 128к-ПЗУ, вообще говоря. Основная проблема там, действительно, в том, что его у многих нет (хотя, люди, которые шьют туда всякие коммандеры, наверное, должны отдавать себе отчет в том, что совместимость страдает). У Олега стоит задача написание либы к языку высокого уровня для озвучки игр, тут возможностей стандартного PLAY вполне достаточно, а вот вопрос памяти, занимаемой либой, критичен. Но да, поскольку версий ПЗУ-128 несколько, все же стоит перенести код в либу. Боюсь, его придется еще и править, сдается мне, что этот код зовет что-то из ПЗУ-48.
Господа, ткаи не завалялось у кого дизассемблера 128K 86-го года все-таки?
Вполне достаточно? Ты не шутишь? В каких же играх встречается озвучка оператором PLAY?
В том-то и дело, что возня с Play того не стоит, учитывая простоту программирования регистров AY. В музыке из игр основное место занимает не базовое программирование регистров (чем оператор play по сути только и занимается), а организация сложной структуры музыки, хранение нот и их интерпретация по всем каналам одновременно.
Критичен ли он для либы? Сомневаюсь. Все зависит от целей программиста, какую программу он желает создать. Или он хочет реализовать сложную музыку с богатыми возможностями, или пару простых звуков. В обоих случаях решения разные, даже если и там, и там предъявляется требование минимального размера кода и данных.
Уж лучше в такой ситуации обратиться к 1к-интрам и тому подобным вещам. Там достаточно сложная музыка занимает мало места в памяти за счет оптимизации плеера по коду.
По-моему Олег ставил несколько иную задачу, чем просто организовать звук с минимальным кодом. А именно, он хотел получить либу, по своим возможностям максимально аналогичную возможностям бейсика, чтобы этой либой было легко пользоваться тем, кто привык программировать на бейсике и хочет перейти на Оберон. В контексте оператора Play, я не видел ни одной серьезной программы, которая им пользуется. Соответственно не слышал и о программистах на бейсике, которые привыкли пользоваться этим оператором. Поэтому тем более овчинка выделки не стоит.
проблема с PLAY в том что он работает блокирующим вызовом, хотя сопроцессор вполне может проигрывать звук не напрягая основной процессор, в этом его суть.
Поэтому используя PLAY, нельзя будет выполнять другие полезные задачи. Он работает как BEEP. Врядли ктото в играх будет использовать процедуру BEEP из бейсика, по той-же самой причине - это блокирующий вызов
Для сопроцессора нужно использовать асинхронные вызовы, а процедуры из пзу для этого не подойдут
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)