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

User Tag List

Показано с 1 по 5 из 5

Тема: Конвертация "на лету" YM2149F регистров в SAA1099

  1. #1
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,923
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    114 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Конвертация "на лету" YM2149F регистров в SAA1099

    Прошу помощи, всемогущий All!

    Хочу написать DOS плеер PSG файлов для звуковухи Creative Music System . Она состоит из двух SAA1099.

    За основу взял код и заметку: http://www.worldofsam.org/node/670 . Все в нем хорошо, кроме того, что огибающую проигнорировали, от слова совсем. Нашел другой код http://simoncooke.com/samcoupe/infob...e/infyjoke.txt , тут огибающая вроде бы обрабатывается (в процедуре play.chip. Но моих знаний, а точнее их отсутствия Z80 ассемблера не хватает, что бы понять логику работы.

    Например, не ясны следующие моменты: Вот у YM есть регистры R8-RA, в которых задаются уровень звука (4 бит) и некий M-mode. Когда M=0, все понятно - уровень сигнала постоянный. Когда M=1 - не ясно по даташиту. Короче я запутался полностью.

    Исходник на Turbo Pascal на всякий случай прилагаю. В настройках DosBox можно выставить sbtype=gb, для эмуляции звуковухи.
    Вложения Вложения

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

  3. #2
    Moderator Аватар для Mick
    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    9,902
    Спасибо Благодарностей отдано 
    176
    Спасибо Благодарностей получено 
    694
    Поблагодарили
    367 сообщений
    Mentioned
    19 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тебе надо поковырятся в SAM Coupe софте. Там где были сборники игр с ZX с эмуляцией AY. Вот собственно узнаешь как народ перекодировал.
    Также еще немного тут упоминается - http://www.worldofsam.org/node/668#comment-1390
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

  4. #3
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,832
    Спасибо Благодарностей отдано 
    479
    Спасибо Благодарностей получено 
    656
    Поблагодарили
    511 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Tronix Посмотреть сообщение
    Например, не ясны следующие моменты: Вот у YM есть регистры R8-RA, в которых задаются уровень звука (4 бит) и некий M-mode. Когда M=0, все понятно - уровень сигнала постоянный. Когда M=1 - не ясно по даташиту. Короче я запутался полностью.
    этот бит вместо уровня звука подключает генератор огибающей (все что в младших 4-х битах тогда просто игнорируется)
    такой себе LFO


    частота которого в регах rB rC
    и rD форма огибающей

    найди ємуль который позволяет менять реги
    и поклацай посмотри как оно работает
    например это можно делать в E3000 (прям можно вписать ручками и послушать что будет)
    но там плохая ємуляция Ау-ка...

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

    Цитата Сообщение от Mick Посмотреть сообщение
    Вот собственно узнаешь как народ перекодировал.
    зачем что то ковырять
    делается все это элементарно (поняв как работает чип(метод научного тыка наше все))
    Последний раз редактировалось NEO SPECTRUMAN; 29.09.2017 в 22:32.

  5. #4
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,923
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    114 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    этот бит вместо уровня звука подключает генератор огибающей (все что в младших 4-х битах тогда просто игнорируется)
    такой себе LFO


    частота которого в регах rB rC
    и rD форма огибающей
    С этим примерно понятно. Огибающая она только для одного канала получается может быть, ну или все три канала с одинаковой огибающей? Вопрос как это положить на SA1099. Там как я понял огибающая может быть разная у двух каналов одновременно:



    Frequensy generator 1 и Frequensy generator 4. При этом ноты играются в каналы 2(A),3(B) и 5(C).
    То есть если я получаю от YM в регистре RA канала С что это не уровень звука, а включить огибающую, я в SAA1099 должен вырубить 5 генератор и включить микшером 4 генератор, в котором уже есть данные от регистров RB, RC?

  6. #5
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,832
    Спасибо Благодарностей отдано 
    479
    Спасибо Благодарностей получено 
    656
    Поблагодарили
    511 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Tronix Посмотреть сообщение
    С этим примерно понятно. Огибающая она только для одного канала получается может быть, ну или все три канала с одинаковой огибающей? Вопрос как это положить на SA1099. Там как я понял огибающая может быть разная у двух каналов одновременно:
    У Ау-ка огибающая может модулировать любое количество каналов.
    Ау может выжать даже 3 уровня сигнала такой сложной формы
    огибающая в канале A
    огибающая в канале A,B
    огибающая в канале A,B,C
    (тоесть sa1099 это не повторит в принципе)

    но обычно она звучит только в одном канале
    и как правило она модулирует основной тон (по своему прямому назначению она давно не используется)
    а там сильно важна точность интервала между частотой тона и огибающей
    так что на sa1099 многие эффекты будут уже не те
    или она вообще может переть прямо на выход когда тон выключен
    в придачу у Ау-ка есть пере инициализация огибающей при смене ее типа
    а в sa яхз...

    А как положить это тебе уже решать
    Он не может на 100% заменить Ау-к

    ты можешь сделать фиксированную огибающую для одного канала

    ты можешь на ходу перераспределять по 6 разным каналам данные так чтоб для огибающей все время был канал с огибающей
    тк Ау-к не использует все 3 канала одновременно на протяжении 100% времени
    А в sa1099 их целых 6
    (но тогда могут возникнуть некоторые артефакты тк у каналов Ау-ка скачащих по 6 каналам Sa1099 будет постоянно сбиваться фаза)


    ты можешь вообще забуферизировать n-е количество данных посылаемых на Ау-к
    и глядя на перед где появится огибающая правильно распределять каналы

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

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

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

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

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. Ответов: 51
    Последнее: 11.08.2014, 10:40
  3. Ответов: 14
    Последнее: 08.05.2013, 10:18
  4. Ответов: 13
    Последнее: 09.01.2013, 06:44
  5. Ответов: 0
    Последнее: 15.08.2010, 14:38

Ваши права

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