Формирование звуков в Денди.

Этому разделу, несомненно, можно посвятить отдельный труд. Ибо нестандартных решений в этом направлении очень много, хотя они и не сильно распространены. Возможности синтеза звуков средствами самой приставки достаточно скудны, и пригодны пожалуй лишь для генерации спецэффектов, но не музыки (речь идет о pAPU сопроцессоре). Но сэкономив (в очередной раз) на синтезаторе, разработчики NES всёже реализовали возможность расширения аппаратных средств генерации звука. Как и в предыдущих случаях, это расширение должно находится на картридже (а где же еще). Т.е. как альтернативу встроенному pAPU, картридж может содержать свой звуковой процессор (чип-синтезатор). Вписывающийся своими регистрами управления в адресное пространство процессора приставки (как правило в свободные ячейки диапазона $4000-$4FFF), на выходе же имеющий аналоговый сигнал сформированного звука. На разъёме картриджа для этого предусмотрено два контакта (см. приложение 4) – один из них – аналоговый выход с pAPU (встроенного в процессор Денди), второй разведен на звуковой выход с приставки. В случае, если картридж не содержит своего звукового процессора, то эти контакты просто замкнуты. Возможно использование микшера для объединения сигнала pAPU и синтезатора на картридже, возможен и вариант установки двух звуковых процессоров на картридже … но это уже все зависит от разработчиков картриджа. Увы, но картридж содержит ограниченное число игр, а покупать для каждой игры одно и тоже оборудование (хотябы даже один и тот же синтезатор) удовольствие дорогое, и как следствие мало распространенное. Можно отметить, что картридж со всеми возможными расширениями (большое ПЗУ (PRG-ROM, CHR-ROM), дополнительное ОЗУ, видео ОЗУ (экранных страниц), ОЗУ для сохранения игр, звуковой(ые) процессор) намного сложнее и «интеллектуальнее» самой приставки – и соответственно в несколько раз ее дороже (и покупать ради новой игры еще один такой картридж стали бы не многие). Поэтому большинство производителей игр не гнались за качеством а брали дешевизной, используя лишь необходимый минимум (память программ и знакогенераторов). Ну а для звука – что есть – стандартный pAPU, который мы и рассмотрим чуть подробнее ниже.

Сопроцессор pAPU.

Звуковой сопроцессор pAPU базируется на модели 2A03 и давно уже находится в одном корпусе с центральным процессором (хотя, надо понимать, существовал и в виде отдельной микросхемы). pAPU представляет собой пятиканальный синтезатор. Причем первые два канала генерируют сигнал прямоугольной формы, третий – треугольной (пила), четвертый – «шум» и пятый – цифровой канал (дельта-модуляция). В некоторых «китайских» вариациях Денди (на неизвестном контроллере) цифровой канал, иногда, отсутствовал. Опять таки же – подробное рассмотрение всех особенностей программирования 2A03 – достаточно объёмно, даже  про нюансы программирования цифрового канала (DMC) писались отдельные статьи. Здесь же (ниже) дадим лишь краткие сведения о pAPU – т.к. в англоязычной документации информация исчерпывающая, а заниматься чисто ее переводом я не стал (да и не думаю что сегодня кого-либо всерьез заинтересует программирование звука в Dendy). По-любому, если я займусь этой темой глобально, эта глава, несомненно, будет дополнена. А пока для общей картины черканем пару абзацев, более подробно можно прочитать в англоязычной документации см. приложение 6.

Регистры pAPU выполняют следующие функции:

Регистр
(адресация по
CPU)

Операция

Назначение

$4000

w/o

Регистр управления канала 1 (Прямоугольник [Square]).

ddle nnnn – duty, loop env/disable length, env disable, vol/env (режим, флаг зацикливания, регулирование громкости/пакетный сигнал, значение громкости/размер пакета)

$4001

w/o

Регистр управления генератором канала 1.

eppp nsss - enable sweep, period, negative, shift

$4002

w/o

Регистр управления частотой (периодом) канала 1.

pppp pppp - period low (период сигнала – младшая часть)

$4003

w/o

Регистр управления частотой (периодом) канала 1.

llll lppp - length index, period high (длительность, период сигнала – старшая часть)

$4004

w/o

Регистр управления канала 2 (Прямоугольник [Square]). См. описание $4000

$4005

w/o

Регистр управления генератором канала 2. См. описание $4001

$4006

w/o

Регистр управления частотой канала 2. См. описание $4002

$4007

w/o

Регистр управления частотой канала 2. См. описание $4003

$4008

w/o

Регистр управления канала 3 (Пила [Triangle]).

clll llll - control, linear counter load

$4009

-

-

$400A

w/o

Регистр управления частотой (периодом) канала 3.

pppp pppp - period low (период сигнала – младшая часть)

$400B

w/o

Регистр управления частотой (периодом) канала 3.

llll lppp - length index, period high (длительность, период сигнала – старшая часть)

$400C

w/o

Регистр управления канала 4 (Шум [Noise]).

--le nnnn - loop env/disable length, env disable, vol/env period

$400D

-

-

$400E

w/o

Регистр управления частотой (периодом) канала 4.

s--- pppp - short mode, period index

$400F

w/o

Регистр управления частотой (периодом) канала 4.

llll l--- - length index

$4010

w/o

Регистр управления цифровым каналом.

il-- ffff - IRQ enable, loop, frequency index

$4011

w/o

Регистр управления громкостью цифрового канала.

-ddd dddd - DAC

$4012

w/o

Регистр адреса цифрового канала.

aaaa aaaa - sample address

$4013

w/o

Регистр длины блока данных цифрового канала.

llll llll - sample length

$4015

w

Регистр управления pAPU.

---d nt21 Enable: DMC, noise, triangle, pulse 2, 1

r

Регистр статуса pAPU.

if-d nt21 - DMC IRQ, frame IRQ, length counter statuses

$4017 [7-6]

w/o

fd-- ---- - 5-frame cycle, disable frame interrupt

(Продолжение следует …)


Введение
Глава 1
Глава 2
Глава 3
Глава 4
Глава 5
Приложение 1
Приложение 2
Приложение 3
Приложение 4
Приложение 5
Приложение 6

Яндекс.Метрика