Технический обзор SEGA GENESIS [Автор неизвестен] (doc) читать постранично, страница - 23

Книга в формате doc! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

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


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

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

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

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

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

Пример

..Когда стартует игра 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
1
1
0
0
0
D3
D2
D1
D0
0
0
D9
D8
D7
D6
D5
D4
2
1
0
1
0
D3
D2
D1
D0
0
0
D9
D8
D7
D6
D5
D4
3
1
1
0
0
D3
D2
D1
D0
0
0
D9
D8
D7
D6
D5
D4

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

Управление генератором шума


Генератор шума использует 3 бита управления “шаблоном” шума. Бит "FB" (Обратная связь) производит периодический шум или “белый” шум:






Частота шума зависит от битов NF1 и NF0:


NF1
NF0
Источник частоты шума
0
0
Такты/2 (Высокие частоты, менее крупный)
0
1
Такты/4
1
0
Такты/8 (Низкие частоты, более крупный)
1
1
Тоновый генератор 3



Примечание: "Такты" это фиксированная частота. Она управляется генератором на кварцевом резонаторе.

Когда биты NF1 и NFO равны 1, генератор тона 3 задает тактовую частоту генератора шума. Это позволяет получить “скользящий” шум по частоте. Этот эффект, например, можно использовать для озвучивания разгона реактивного двигателя.

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


D7
D6
D5
D4
D3
D2
D1
D0
1
1
1
0
0
FB
NF1
NF0