Требуется озвучить игру простыми звуками сопроцессора. В связи с этим вопрос к гуру: как вызвать из машинного кода оператор 128к-бейсика PLAY ? Вопрос посложнее: как сделать это на машине с сопроцессором, но без 128кб-ПЗУ? Второй вопрос - чистое пижонство или "очень хочется сделать чтобы работало на 48к-машинках с AY - правда, никогда не встречал таких машинок, даже не уверен, что где-то наберётся хоть пара штук". Так что первый вопрос всё-таки важнее. Но давайте и к нему отнесёмся критично. Может я чего-то недопонимаю. Первым помыслом было желание взять плеер из WHAM+AY. Вторым - некоторое исследование в области "а какие вообще плееры и (более или менее) стандартные форматы музыки для них используются?" Первым, что я нашёл, был плеер PT3x0A в журнале 3BIT. Его-то и думаю использовать, если не найду что-то поинтереснее (может даже покомпактнее).
На Обероне работа с данным плеером выглядит так. Очень плохой стиль, очень.Непереносимый. Ну а шо делать.
Хочется работать со звуками где-то так:Код:MODULE TestPT3; IMPORT Asm, B := Basic, PT3x0A; VAR ace: PT3x0A.Melody; BEGIN (*$MAIN*) B.Init; IF PT3x0A.TabAdr() MOD 256 # 0 THEN B.PRSTR("Start address of module must be aligned to "); B.PRINT(PT3x0A.TabAdr() MOD 256); B.PRSTR(" bytes"); B.PAUSE(0); END; (* Player & melodies are from http://zxpress.ru/article.php?id=9508 *) B.DEFDATA(ace, 2137); (* ace.m *) B.DATA(...); (* Данные мелодии поскипаны *) PT3x0A.Install(ace); Asm.Code("play_l$: LD IY,#0x5C3A"); Asm.Code(" EI "); Asm.Code(" HALT "); PT3x0A.Play; Asm.Code(" LD A,#0x7F "); Asm.Code(" IN A,(-2) "); Asm.Code(" RRA "); Asm.Code(" JR C,play_l$ "); PT3x0A.Stop; B.Quit; END TestPT3.
Basic.PLAY("строка...");
Ну и чтобы сам плеер был как можно компактнее. И фиг с ним, пусть вызывается из ПЗУ 128.
Перерыл кучу материалов, но не нашёл как это сделать из машкода.




Непереносимый. Ну а шо делать.
Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

