Konami SCC

The Konami SCC (Sound Custom Chip или Sound Creative Chip) - электронный компонент, микросхема звукогенератора, разработанная фирмой Konami совместно с Yamaha для использования в бытовых компьютерах стандарта MSX. Имеет маркировку K051649. Причиной её создания стали не удовлетворяющие потребности Konami возможности микросхемы General Instrument AY-3-8912, использующейся в качестве штатного генератора звука в компьютерах MSX и MSX2 (называемой в этом контексте PSG). SCC может работать одновременно с PSG.

Игры, использующие SCC, содержали эту микросхему на плате игрового картриджа. Помимо собственно функций генерации звука, SCC имела встроенную схему управления расширенной памятью, что позволяло обходиться без отдельной микросхемы для управления памятью. Почти все поздние игры для MSX, начиная с 1987 года, используют микросхему SCC. Среди них такие игры, как Gradius 2 и Metal Gear 2. Помимо использования в компьютерах MSX, микросхема SCC также использовалась в некоторых игровых автоматах, например: Haunted Castle, City Bomber, Hexion, Nyan Nyan Panic. Эмуляция микросхемы SCC реализована во многих эмуляторах компьютеров MSX, и в многосистемном эмуляторе игровых автоматов MAME.

Немного улучшенная версия, называемая Sound Cartridge, использовалась в играх Snatcher и SD Snatcher. Она имеет в составе картриджа дополнительное ОЗУ объёмом 64 килобайта.

На каждой микросхеме SCC имеется маркировка KONAMI 051649 2212P003 JAPAN, после которой следует код даты и места производства, например 8750AAA. Первые две цифры означают год, следующие две - номер недели в году. Буквы являются кодовым обозначением завода-производителя и партии.

Технически, SCC представляет собой примитивный синтезатор на основе волнового синтеза. Она имеет пять каналов. Каждый из каналов имеет возможность программного включения-выключения, изменения громкости и частоты, а также назначения произвольной формы сигнала, определяющейся 32-байтным сэмплом. Каналы 4 и 5 разделяют один буфер сэмпла, таким образом микросхема содержит 128 байт встроенной памяти.

Программирование SCC

Ниже приводится техническое описания процесса программирования микросхемы на компьютерах MSX. Так как официальная документация на микросхему не была публично доступна, все эти сведения получены методом "обратной разработки".

SCC управляется через порты ввода-вывода, отображённые на память. Для инициализации микросхемы необходимо записать число 3Fh (старшие два бита не используются, таким образом, можно использовать и число FFh) в любую ячейку памяти в области адресов 9000h...97FFh. После инициализации можно управлять SCC, записывая и читая данные в области адресов 9800h...9FFFh.

Адрес Запись/чтение Назначение
9800h - 981Fh Запись и чтение Форма сигнала канала 1
9820h - 983Fh Запись и чтение Форма сигнала канала 2
9840h - 985Fh Запись и чтение Форма сигнала канала 3
9860h - 987Fh Запись и чтение Форма сигнала каналов 4 и 5
9880h - 9881h Только запись Частота канала 1
9882h - 9883h Только запись Частота канала 2
9884h - 9885h Только запись Частота канала 3
9886h - 9887h Только запись Частота канала 4
9888h - 9889h Только запись Частота канала 5
988Ah Только запись Громкость канала 1
988Bh Только запись Громкость канала 2
988Ch Только запись Громкость канала 3
988Dh Только запись Громкость канала 4
988Eh Только запись Громкость канала 5
988Fh Только запись Биты включения-выключения каналов 1..5
9890h - 989Fh Аналогично ардесам 9880h...988Fh
98A0h - 98DFh Не используется
98E0h - 98FFh Запись и чтение Регистр искажения

Форма сигнала каналов определяется 32 байтами со знаком, и представляет собой сэмпл одного периода сигнала. Она непосредственно определяет тембр звучания канала. Проигрывание происходит циклически, от байта 0 до байта 31, и заново.

Частота каналов задаётся аналогично PSG. Это 12-битное значение делителя тактовой частоты микросхемы, чем больше значение делителя, тем ниже генерируемый тон. Первый байт содержит младшие 8 бит, второй - старшие 4. Биты 4..7 второго байта не используются.

Формула расчёта делителя для получения требуемой частоты также аналогична PSG:

f_{tone} = \frac{f_{clock}}{32(P + 1)}

fclock - тактовая частота компьютера (на MSX всегда равна 3579545 Гц), P - получаемый 12-битный делитель.

Громкость каналов также задаётся аналогично PSG, но поддержка амплитудной огибающей отсутствует. Младшие 4 бита содержат громкость, 0 - минимальная (тишина), 15 - максимальная). Старшие 4 бита не используются.

Регистр включения-выключения каналов использует пять бит. Бит 0 соответствует первому каналу, бит 4 - пятому. Установка бита включает канал, сброс - выключает. Остальные три бита не используются.

Регистр искажения (98E0h)

Этот регистр не использовался ни в одной игре от Konami. Все адреса в области памяти 98E0h...98FFh ссылаются на один и тот же регистр. Сброс SCC устанавливает его значение в 0.

Младшие два бита регистра управляют пред-делителем тактовой частоты, и, соответственно, влияют на производимые каналами частоты. Если эти два бита установлены в значение 01, все генерируемые частоты умножаются на 256. Если они установлены в значение 11 или 10, частоты умножаются на 16.

Если установлен бит 5, воспроизведение сэмпла формы сигнала начинается с начала при каждой записи в регистр частоты соответствующего канала.

Если установлен бит 6, данные о форме сигнала начинают сдвигаться со скоростью, расчитываемой по формуле:

f = \frac{f_{clock}}{P + 1}

При этом становится невозможным запись в буфер формы сигнала.

Если биты 6 и 7 установлены в 01, каналы 4 и 5 генерируют шум. Если они установлены в 11, генерируется шум с амплитудной огибающей.

Чтение из этого регистра всегда возвращает FFh, при этом устанавливая бит 6 регистра. Так как после этого начнёт сдвиг данных о форме сигнала, значения, читаемые по адресам 9800h..987Fh будут изменяться при каждом следующем чтении.

Подробности об адресах памяти

Область памяти 9800h..987Fh содержит ОЗУ, пока регистр искажения сброшен. Область памяти 9880h..98FFh доступна только для записи, если попытаться произвести чтения, всегда будет возвращаться значение FFh. Нужно проявлять осторожность при чтении регистра искажения, так как при этом устанавливается его бит 6.

Область памяти 9900h..99FFh имеет точно такое же назначение, как области памяти 9800h..98FFh, 9900h..99FFh и так далее, до 9F00h..9FFFh. Это происходит из за неполной дешифращии адреса для микросхемы SCC, адресные линии A8..A10 не участвуют в дешифрации адреса.

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home