User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 19

Тема: AY и такты. Предельные возможности.

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию AY и такты. Предельные возможности.

    На последнем CSP возникла дискуссия по поводу того, а можно ли сделать плеер для в 300 тактов. К сожалению, мои надежды на лучшее разбились. В 300 тактов никак не укладывается. Поделюсь своими мыслями, если кому интересно.

    Как известно, AY представлен в виде двух портов - FFFD (регистр адреса) и BFFD - (регистр данных).

    Как бы я не извращался - самый быстрый вывод такой:

    ld c,#FD ; один раз, 7 тактов
    ;-----------------
    ; Вывод в один регистр
    ld b,#FF ; BC = FFFD ; 7
    ld A, <номер регистра> ; 7
    out (c),a ; 12
    ld b,#BF ; BC = BFFD ; 7
    ld A, <данные, записываемые в регистр> ; 7
    out (c),a ; 12
    ;-----------------------------------ВСЕГО: 52 такта

    То есть для записи одного регистра AY меньше 52 тактов не получишь (если кто знает как - то прошу поправить меня).

    Для воспроизведения одного канала, надо как минимум запись в 2 регистра управления частотой. То есть 104 такта.

    То есть имеем следующие предельные (минимальные) параметры вывода звука:

    Полное управление AY (11 регистров, без управления огибающей): 52*11 = 572 такта.

    Управление тремя каналами. (6 регистров, только частота без громкости и шума): 52*6 = 312 тактов.

    Управление двумя каналами. (4 регистра, только частота без громкости и шума): 52*4 = 208 тактов.

    Управление одним каналом + шум. (4 регистра, частота и шум ): 52*4 = 208 тактов.


    В принципе, два последних варианта вполне укладываются в 300 тактов. Только музыканты будут не в восторге)


    Недостатки такого способа вывода звука очевидны: очень большой объем кода. Ну и конвертор писать надо.

    Достоинства тоже есть - минимально возможно время и постоянное время выполнения.
    Последний раз редактировалось SfS; 01.08.2017 в 06:03.

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

  3. #2

    Регистрация
    15.04.2011
    Адрес
    г. Новосибирск
    Сообщений
    769
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    372
    Поблагодарили
    60 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Самое главное зачем? Ради пары линии которые никто не увидет на реальной машине? )
    Какой-нибудь самый кривой PSG плеер около 1200 тактов, что за проблема?

    Не вникал, про АУ ничего не знаю почти, наверняка у тебя есть неучтённые моменты. Просто в лоб:

    ld c,#FD ; один раз, 7 тактов
    ld de,#BFFF; 10 тактов

    ;-----------------
    ; Вывод в один регистр
    ld hl, <номер регистра + данные, записываемые в регистр>;10
    ld b,e ; BC = FFFD ; 4
    out (c),l ; 12
    ld b,d ; BC = BFFD ; 4
    out (c),h ; 12
    ;-----------------------------------ВСЕГО: 42 такта
    Последний раз редактировалось DenisGrachev; 01.08.2017 в 07:13.

  4. #3

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да. Давно я не кодил на спеке) 42 - уже куда лучше)


    Зачем? А чтобы было

    Дискуссия началась с того, что одному товарищу надо было в деме уложиться в 300 тактов.



    Полное управление AY (11 регистров, без управления огибающей): 42*11 = 462 такта.

    Управление тремя каналами. (6 регистров, только частота без громкости и шума): 42*6 = 252 такта. (УКЛАДЫВАЕМСЯ в 300 тактов с запасом! Два канала + шум или три канала без шума)

  5. #4

    Регистрация
    15.04.2011
    Адрес
    г. Новосибирск
    Сообщений
    769
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    372
    Поблагодарили
    60 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    Да. Давно я не кодил на спеке) 42 - уже куда лучше)

    Дискуссия началась с того, что одному товарищу надо было в деме уложиться в 300 тактов.
    Знаем товарища, второй год уже пытается доделать Просто практически никакой пользы, ну сделай ты линию не так низко да и всё.

    Ну да ладно, спортивный интерес тоже хорошо!

  6. #5

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    Полное управление AY (11 регистров, без управления огибающей): 42*11 = 462 такта.

    Управление тремя каналами. (6 регистров, только частота без громкости и шума): 42*6 = 252 такта. (УКЛАДЫВАЕМСЯ в 300 тактов с запасом! Два канала + шум или три канала без шума)
    не обязательно обновляеть все регистры за один фрейм (одна строка звучит от 3 фреймов и более...)
    это критично только для орнаментов
    но и они тоже могут быть на пониженной частоте 25ГЦ и не плохо звучить

    качество инструментов конечно снизится но не на столько уж прям


    правда могут всплыть дополнительные щелчки и булькания
    изза того что в этом фрейме не успели обновится 2-й рег частоты или если должен был быть большой перепад громкости и включение шума
    само же отставание в обновлении разных групп регистров услышать не реально
    сильно короткий интервал
    Последний раз редактировалось NEO SPECTRUMAN; 01.08.2017 в 16:16.

  7. #6

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    не обязательно обновляеть все регистры за один фрейм (одна строка звучит от 3 фреймов и более...)
    Я об этом уже чуть раньше писал.
    Врядли регистры частоты будут меняться каждые 1/50 сек.

    Надеюсь товарищу, который хотел уложиться в 300 тактов не нужна музыка с супернаворотами)

  8. #7

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    Врядли регистры частоты будут меняться каждые 1/50 сек.
    в орнаментах они меняются с частотой 50Гц
    сами инструменты тоже могут менять частоту каждый фрейм так же как и громкость

    но когда важно уложится в такты на это можно подзабить
    (хотя орнаменты придется замедлять ручками в редакторе перед конвертированием)

    а супер навороты чувствительны к времянкам настолько что
    сами будут через раз работать на реале (тк нет переинициализации счетчиков у тона)
    не говоря уже о разных машинах с разными частотами процов\интов и Ау-ков
    Последний раз редактировалось NEO SPECTRUMAN; 01.08.2017 в 20:02.

  9. #8

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Другой вопрос, что при выводе 6 регистров за кадр, 1 секунда звука будет занимать 9*6*50 = 2700 байт.
    То есть на страничку войдет всего 6 секунд такой "музыки")

    - - - Добавлено - - -

    Насчет линии и товарища.

    Я бы просто побил экран на две части и если вывод на борюдюр в нижней части, то выводил бы звук ДО вывода на бордюр. Если вывод на экран в верхней части - то выводил бы звук после вывода на бордюр. Но я наверное плохо понял, что ему надо и почему так критичны 300 тактов.

  10. #9

    Регистрация
    15.04.2011
    Адрес
    г. Новосибирск
    Сообщений
    769
    Спасибо Благодарностей отдано 
    67
    Спасибо Благодарностей получено 
    372
    Поблагодарили
    60 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    Другой вопрос, что при выводе 6 регистров за кадр, 1 секунда звука будет занимать 9*6*50 = 2700 байт.
    То есть на страничку войдет всего 6 секунд такой "музыки")
    есть же какое-то время сразу с начала прерывания (около 3584 тактов на пентагоне), пока ещё луч не начал рисовать вот там и надо сделать постоянную по времени процедуру которая всех спасёт.

  11. #10

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DenisGrachev Посмотреть сообщение
    есть же какое-то время сразу с начала прерывания (около 3584 тактов на пентагоне), пока ещё луч не начал рисовать вот там и надо сделать постоянную по времени процедуру которая всех спасёт.
    Имеется ввиду кадровый гасящий импульс?

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

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

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

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

Похожие темы

  1. Новые возможности форума !
    от AAA в разделе Форум
    Ответов: 11
    Последнее: 13.07.2011, 09:06
  2. Интересный вопрос про циклы и такты
    от Володя Березин в разделе Программирование
    Ответов: 5
    Последнее: 09.02.2009, 07:12
  3. расширяем возможности ОСи)))
    от Sayman в разделе Оси
    Ответов: 0
    Последнее: 28.10.2008, 08:35
  4. Cчитаем такты... (2SMT)
    от rasmer в разделе Эмуляторы
    Ответов: 11
    Последнее: 10.08.2005, 07:29
  5. Новые возможности Unreal
    от razer в разделе Эмуляторы
    Ответов: 122
    Последнее: 26.02.2005, 02:05

Ваши права

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