Важная информация

User Tag List

Страница 1 из 5 12345 ПоследняяПоследняя
Показано с 1 по 10 из 50

Тема: Простая работа с AY

  1. #1
    Master Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    844
    Благодарностей: 225
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Простая работа с AY

    Требуется озвучить игру простыми звуками сопроцессора. В связи с этим вопрос к гуру: как вызвать из машинного кода оператор 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.

    Перерыл кучу материалов, но не нашёл как это сделать из машкода.
    Вложения Вложения
    Последний раз редактировалось Oleg N. Cher; 29.10.2014 в 02:11.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran Аватар для drbars
    Регистрация
    02.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,632
    Благодарностей: 699
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Олег, использовать подпрограммы 128 ПЗУ дурной тон. Есть специальный пакет от Shiru для работы с эффектами на ay.
    http://shiru.untergrund.net/files/ayfxedit04.zip
    Player на асме достаточно компактный.

  4. Эти 9 пользователя(ей) поблагодарили drbars за это полезное сообщение:
    Barmaley_m (31.10.2014), Eagle (21.11.2014), John North (29.10.2014), Oleg N. Cher (29.10.2014), Reobne (11.11.2014), Sergey (31.10.2014), solegstar (31.10.2014), TSL (02.11.2014), Максагор (01.11.2014)

  5. #3
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,122
    Благодарностей: 1075
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А что, дизассемблер процедур с комментариями отменили чтоли?

  6. #4
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,809
    Благодарностей: 976
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Олег, использовать подпрограммы 128 ПЗУ дурной тон.
    А что в нем дурного? Надо только следить, чтобы в переменной состояния 7ffd была правда всегда. Ну и да, все-таки включать ПЗУ 128 безопасно с точки зрения прерываний.
    Кстати, а у кого-нить есть дизассемблер 128K? На WoS ссылка протухла.
    Собсна, из дизассемблера можно вытащить проигрыватель и оформить как либу в ZXDev.

  7. #5
    Master Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    844
    Благодарностей: 225
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Есть специальный пакет от Shiru для работы с эффектами на ay.
    Ну шо ж, плеер от Shiru так плеер от Shiru, принимаюсь за его исследование.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Собсна, из дизассемблера можно вытащить проигрыватель и оформить как либу в ZXDev.
    Да, мысль хорошая. Можно даже сделать опцию - вызывать плеер из ПЗУ 128 или включать его в целевой код.

    Дизассемблировать ПЗУ 128 или получить его готовый листинг, да ещё и с комментами - конечно заманчиво. Надо поискать, а если у кого есть - приаттачьте, плиз.

    Спасибо за идеи.

  8. #6
    Guru
    Регистрация
    16.12.2009
    Адрес
    Харьков
    Сообщений
    3,823
    Благодарностей: 1878
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    А что в нем дурного? Надо только следить, чтобы в переменной состояния 7ffd была правда всегда.
    просто не у всех она (128 ПЗУ) есть в наличии, очень часто вместо неё прошивают какой-нить коммандер.

  9. Эти 2 пользователя(ей) поблагодарили solegstar за это полезное сообщение:
    Barmaley_m (31.10.2014), John North (29.10.2014)

  10. #7
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,563
    Благодарностей: 690
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в книге "Как написать игру на Ассемблере" про программирование AY есть, припоминаю.

  11. #8
    Veteran Аватар для drbars
    Регистрация
    02.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,632
    Благодарностей: 699
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от solegstar Посмотреть сообщение
    просто не у всех она (128 ПЗУ) есть в наличии, очень часто вместо неё прошивают какой-нить коммандер.
    Всё верно. К тому же версий 128ой прошивки целая куча, Amstrad в пример. Да и самопала много, в виде зашитых командеров и утилит.

    Player от Shiru вешается на прерывания, а управляется из общего цикла подачей в регистр номера эффекта. Редактор эффектов сделан под PC, а формат уже как стандарт в нашем скромном хобби

  12. #9
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,122
    Благодарностей: 1075
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    К тому же версий 128ой прошивки целая куча, Amstrad в пример
    а Амстрад тут причем?

  13. #10
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    771
    Благодарностей: 611
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Дизассемблировать ПЗУ 128 или получить его готовый листинг, да ещё и с комментами - конечно заманчиво.
    Если и реверсить, то лучше из сборников MSX-1,2,xx - там же и звучки прикольные:

    http://zxaaa.untergrund.net/view_dem...sx&title=Title

Страница 1 из 5 12345 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Работа с trd на PC
    от Crowner в разделе Разное
    Ответов: 30
    Последнее: 14.07.2015, 09:07
  2. Работа с HDD!!!
    от Voxel в разделе Программирование
    Ответов: 16
    Последнее: 05.05.2013, 02:16
  3. Работа со спрайтами
    от drbars в разделе Софт
    Ответов: 19
    Последнее: 12.11.2012, 19:59

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •