Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Регистр 27H






 

Регистр D7 D6 D5 D4 D3 D2 D1 D0
27H Режим канала 3 Сброс B Сброс A Включение A Включение B Загрузка A Загрузка B

 

Регистр 27H управляет таймерами A и B и режимом канала 3 (6).

 

Режим канала 3 D7 D6  
Нормальный 0 0 Канал 3 (6) такой же как и остальные
Особый 0 1 Канал 3 (6) имеет 4 разных частоты
Недопустимо 1 X --------

 

В нормальном режиме операторы канала используют смещение от целых множителей от одной частоты.

В особом режиме каждый оператор имеет собственную частоту. Частота оператора 1 канала 3 в регистрах A2H и A6H. Частоты операторов 2, 3 и 4 канала 3 в регистрах A8H и ACH, A9H и ADH, AAH и AEH соответственно.

Никто не использует таймеры, но Японской инструкции говорится:

Загрузка 1 запускает таймер, 0 останавливает его.
Включение 1 разрешает устанавливать флаг при переполнении. 0 таймер считает без установки флага.
Сброс Запись 1 очищает флаг, запись 0 ничего не делает.

 

• От переводчика:

• Все-таки некоторые разработчики используют таймеры вопреки мнению автора. Один из примеров – “Sub Terrania”. Это обычно позволяет избежать зависимости темпа мелодии от режима PAL или NTSC. Это происходит потому, что единственным опорным таймером для звуковой системы является кадровое прерывание VINT. Его частота различна для PAL (50Hz) и NTSC (60Hz). Было бы правильным если разработчики Genesis подключили бы вывод 13 YM2612 на вывод 16 (NMT) Z80. Это немаскируемое прерывание, но его можно запретить внутри YM2612.


Регистр 28H – Включение/выключение ноты

 

Регистр D7 D6 D5 D4 D3 D2 D1 D0
28H Оператор Не используется Номер канала
       
                   

 

Регистр используется для генерации событий " Key on " и " Key off ". " Key on " это нажатие на клавишу синтезатора. " Key off " это отпускание клавиши. Последовательность извлечения ноты: 1 – установить параметры, 2 – “ key on ”, 3 - подождать, 4 – “ key off ”. Когда происходит “ key off ”, канал FM прекращает медленное затухание и начинает быстрое, которое описано в " RR" (Release Rate – Скорость отпускания).

 

При одиночной записи в регистр 28H все операторы устанавливаются одновременно для одного канала. Сега всегда устанавливает их все либо в 1 (вкл) либо в 0 (выкл). Используя особенности канала 3, наверно, возможно использовать для каждого оператора отдельную ноту, поэтому возможно включать и выключать их раздельно.

 

Значения битов каналов даны ниже:

 

D2 D1 D0 Channel
       
       
       
       
       
       

 

При этом, каналы 1, 2 и 3 доступны через адреса 4000H и 4001H, а каналы 4, 5 и 6 – через 4002H и 4003H.


Регистры 2AH/2BH – 8 битный ЦАП

 

 

Регистр D7 D6 D5 D4 D3 D2 D1 D0
2AH 8 бит данных ЦАП
2BH Включение ЦАП не используется

 

 

В регистр 2AH записываются данные 8 бит PCM. Все тайминги (дискретизацию) должен делать процессор.

 

Если ЦАП включен (1 в D7 регистра 2BH), он заменяет канал 6. Только регистр канала 6 имеет значение для панорамирования ЦАП в левый/правый канал. Это регистр B4H.


Диапазон регистров 30H+ – Расстройка/Множитель

 

 

Регистры 30H+ - 90H+ все однооператорные.

 

 

  D7 D6 D5 D4 D3 D2 D1 D0
30H+ X DT1 MUL

 

 

И DT1 (Detune - Расстройка), и MUL (Multiple - Множитель) задают частоту оператора – основную частоту в канале.

 

Значения MUL лежат в пределах от 0 до 15, и являются прямым множителем основной частоты, исключение составляет значение 0 – оно равно 1/2 от частоты. Итого: MUL=0 до 15 дает *1/2, *1, *2,... *15.

 

DT1 дает небольшую вариацию (расстройку) основной частоты *MUL. Старший бит DT1 (бит D6 в 30H+) является знаком, а остальные два - значением.

 

D6 D5 D4 Множитель
      без изменений
      × (1+E)
      × (1+2E)
      × (1+3E)
      без изменений
      × (1-E)
      × (1-2E)
      × (1-3E)

 

Где E – малое число.
Диапазон регистров 40H+ – Общая громкость

 

  D7 D6 D5 D4 D3 D2 D1 D0
40H+ X TL

 

 

TL (Total Level – Общая громкость) задает максимальную амплитуду огибающей, 0 – максимум и 127 – минимум. Изменение происходит с шагом примерно в 0.75 dB.

 

Чтоб сделать ноту мягче, нужно изменить только TL слотов (выходных операторов). Изменение других операторов приводит к получению вариаций ноты.


Диапазон регистров 50H+ – Масштаб скорости/Скорость атаки

 

  D7 D6 D5 D4 D3 D2 D1 D0
50H+ RS X AR

 

В регистрах 50H+ содержится RS (Rate Scaling – Масштаб скорости) и AR (Attack Rate – Скорость атаки). AR это начальная атака до максимального уровня TL (см. выше).

 

RS влияет на все скорости (AR, D1R, D2R и RR) одинаково. RS это угол нарастания и зависит от частоты (чем выше частота, тем больше угол, т.е. все процессы ускоряются).

 

Пять старших бит частоты (3 бита октавы т 2 бита ноты) называются KC (Key code – Код клавиши) и используются при расчете общего RS по формулам:

 

RS=0 -> Конечная скорость = 2 * Скорость + (KC/8)

RS=1 -> Конечная скорость = 2 * Скорость + (KC/4)

RS=2 -> Конечная скорость = 2 * Скорость + (KC/2)

RS=3 -> Конечная скорость = 2 * Скорость + (KC/1)

KC/N всегда округляется в меньшую сторону.

 

Так как все скорости изменяются с 0-31, то диапазон влияния RS на скорости меняется от малого (0-3) до большого (0-31).

 


Диапазон регистров 60H+ – Амплитудная модуляция/Первое затухание

 

  D7 D6 D5 D4 D3 D2 D1 D0
60H+ AM X D1R

 

D1R это скорость первого сильного затухания (см. выше). Как и все другие скорости, он зависит от RS.

 

AM это включение амплитудной модуляции, которая происходит генератором низкой частоты (LFO). Этот бит не действует, пока не будет включен сам генератор (LFO) и в регистре B4H+ значение AMS (Amplitude modulation sensitivity – Глубина амплитудной модуляции) не равна нулю.

 

Диапазон регистров 70H+ – Масштаб скорости/Скорость атаки

 

  D7 D6 D5 D4 D3 D2 D1 D0
70H+ X D2R

 

 

D2R это скорость второго медленного затухания, продолжающегося пока нажата клавиша.


Диапазон регистров 80H+ – Вторая амплитуда/Скорость отпускания

 

 

  D7 D6 D5 D4 D3 D2 D1 D0
80H+ D1L RR

 

 

D1L это вторичная амплитуда, которая устанавливается после первого сильного затухания. Она должна быть умножена на 8, если ее сравнивать с основной амплитудой (TL). Как и в случае с TL, чем больше число – тем меньше амплитуда (0 – максимальная).

 

RR это скорость отпускания. Быстрое затухание после отпускания клавиши. Все скорости это 5-ти битные числа, но здесь доступно всего 4 бита. Для соответствия, здесь используются 4 старших бита скорости отпускания, а младший бит всегда равен 1. Другими словами, умножьте на 2 и прибавьте 1.

 

Диапазон регистров 90H+ – Для частного использования

 

 

  D7 D6 D5 D4 D3 D2 D1 D0
80H+ X SSG-EG

 

 

Этот регистр зарезервирован, и должен быть обнулен.


Последние регистры в основном для одного канала. Каждый регистр утроен (см. выше).

 

Диапазон регистров A0H+, A4H+, A8H+, ACH+ - Частота и октава

 

 

  D7 D6 D5 D4 D3 D2 D1 D0
A0H+ Младший байт частоты
A4H+ X Блок Старшие биты частоты
A8H+ Младший байт вспомогательной частоты канала 3 (6)
ACH+ X Вспомогательный блок канала 3 (6) Старшие биты вспомогательной частоты канала 3 (6)

 

 

Частота канала 1 в регистрах A0H и A4H.

Частота канала 2 в регистрах A1H и A5H.

Частота канала 3 в нормальном режиме (см. выше) в регистрах A2H и A6H.

 

Если канал 3 (6) в специальном режиме:

 

Частота 1 оператора канала 3 (6) в регистрах A7H и A6H

Частота 2 оператора канала 3 (6) в регистрах A8H и ACH

Частота 3 оператора канала 3 (6) в регистрах A9H и ADH

Частота 4 оператора канала 3 (6) в регистрах AAH и AEH


Частота – это 14-ти битное число, которое надо устанавливать сначала старшие биты, а затем младший байт (например, A4H потом A0H). Старшие 3 бита называются “блок”, которые дают октаву. Следующие 10 бит дают позицию в октаве, и возможна последовательность из 12 значений:

 

 

Число частоты Значение (частота для 1 октавы)
Десятичное Шестнадцатеричное
    261, 7 Гц До
  28D 277, 2 Гц До диез/Ре бемоль
  2B4 293, 7 Гц Ре
  2DD 311, 1 Гц Ре диез/Ми бемоль
    329, 6 Гц Ми
    349, 2 Гц Фа
    370, 0 Гц Фа диез/Соль бемоль
  39C 392, 0 Гц Соль
  3D3 415, 3 Гц Соль диез/Ля бемоль
  40D 440, 0 Гц Ля
  44B 466, 2 Гц Ля диез/Си бемоль
  48C 493, 9 Гц Си

 

 

Эти числа нужно использовать в каждой октаве.


Диапазон регистров B0H+ - Обратная связь/Алгоритм

 

 

  D7 D6 D5 D4 D3 D2 D1 D0
B0H+ X Обратная связь Алгоритм

 

Обратная связь – это степень возврата собственного сигнала 1-го оператора в него обратно. На схемах это отображают так:

 

 

Алгоритм – это тип взаимодействий операторов. Полную диаграмму алгоритмов смотрите выше.

 

 

Диапазон регистров B4H+ - Управление каналами/Глубина воздействия LFO

 

 

  D7 D6 D5 D4 D3 D2 D1 D0
B4H+ Левый Правый AMS X FMS
                   

 

 

Регистр B4H содержит управление каналами и глубиной воздействия LFO на сигнал.

 

D7 - Левый канал, 1 включен, 0 выключен.

D6 - Правый канал, 1 включен, 0 выключен.

 

Примечание: Стерео можно услышать только на наушниках.

 


AMS (Amplitude modulation sensitivity – глубина амплитудной модуляции) и FMS (Frequency modulation sensitivity – глубина частотной модуляции) это степень воздействия LFO на сигнал канала. Если LF0 выключен, этот регистр можно не устанавливать. Дополнительно, амплитудная модуляция включается на уровне оператора.

 

AMS        
dB   1.4 5.9 11.8

 

FMS                
% от полутона   +/- 3.4 +/- 6.7 +/-10 +/- 14 +/- 20 +/- 40 +/- 80

 


Тестовая программа

 

Вот тестовая программа начальной инициализации простой ноты " Grand Piano" (Большой Рояль)

 

Регистр Значение Комментарий
22H   Выключение LFO
27H   Нормальный режим канала 3(6)
28H   Выключить все каналы
28H  
28H  
28H  
28H  
28H  
2BH   Выключить ЦАП
30H 71H DT1/MUL
34H 0DH
38H 33H
3CH 01H
40H 23H TL
44H 2DH
48H 26H
4CH 00H

 


 

Регистр Значение Комментарий
50H 5FH RS/AR
54H 99H RS/AR
58H 5FH RS/AR
5CH 94H RS/AR
60H   AM/D1R
64H   AM/D1R
68H   AM/D1R
6CH   AM/D1R
70H   D2R
74H   D2R
78H   D2R
7CH   D2R
80H 11H D1L/RR
84H 11H D1L/RR
88H 11H D1L/RR
8CH A6H D1L/RR
90H   Обнулить
94H   Обнулить
98H   Обнулить
9CH   Обнулить
B0H 32H Обратная связь/Алгоритм
B4H C0H Вывод на оба канала
28H 00H Key off
A4H 22H Установить частоту
A0H 69H Установить частоту
28H FOH Key on
< Ждать>    
28H 00H Key off

 

Примечание:

#1 Записывать сначала адрес в 4000H или 4002H, затем данные в 4001H или 4003H.

#2 Перед записью адреса/команды ждать, пока бит D7 не станет 0 (по любому адресу из 4000H-4003H).

#3 Всегда записывать сначала старшие биты/байт, а затем младшие биты/байт.


 

 

Программируемый генератор звука (PSG)

 

PSG содержит четыре звуковых канала, из них 3 канала тональных и один шумовой. Каждый из каналов содержит независимый регистр управления громкостью. PSG управляется через порт 7FH.

 

Управление громкостью для всех каналов происходит записью следующих байт в порт 7FH:

 

Описание D7 D6 D5 D4 D3 D2 D1 D0
Тоновый генератор #1:         A3 A2 A1 A0
Тоновый генератор #2:         A3 A2 A1 A0
Тоновый генератор #3:         A3 A2 A1 A0
Шумовой генератор:         A3 A2 A1 A0

 

A3 A2 A1 A0 Затухание
        0 dB (максимальная громкость)
        2 dB (чем больше затухание, тем тише звук)
        4 dB
        6 dB
        8 dB
        10 dB
        12 dB
        14 dB
        16 dB
        18 dB
        20 dB
        22 dB
        24 dB
        26 dB
        28 dB
        - выключен -

Пример

 

..Когда стартует игра Mk3, исполняется следующий код:

 

LD HL, CLRTB; Таблица инициализации

LD C, PSG_PRT; Порт PSG = 7FH

LD B, 4; Передать четыре байта

OTIR; Записать

(и т.д.)

 

CLTB defb $9F, $BF, $DF, $FF

 

Этот код выключает все четыре канала. Неплохо его использовать и во время нажатия на кнопку “Пауза”, чтобы не оставалось звуков во время паузы.

 


Частота тонального генератора

 

 

Частота задается 10-ти битным значением. Это значение уменьшается счетчиком до 0, и затем перезагружается. Поэтому, чем больше число, тем ниже частота.

 

Чтобы записать значение частоты в генератор, нужно записать пару байт в регистр 7FH:

 

Канал Первый байт (адрес) Второй байт (данные)
D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0
          D3 D2 D1 D0     D9 D8 D7 D6 D5 D4
          D3 D2 D1 D0     D9 D8 D7 D6 D5 D4
          D3 D2 D1 D0     D9 D8 D7 D6 D5 D4

 

D9 - D0 – 10-ти битное значение частоты (период).

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.