Konami SCC (Konami SCC)

Перейти к навигации Перейти к поиску
Микросхема Konami SCC, год выпуска 1988

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

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

На упаковке каждой из игр, использующих SCC, присутствует надпись «…new 8 voice polyphonic LSI Custom Sound Chip Mounted.» («…установлена новая восьмиголосая полифоническая БИС.»). Однако, SCC содержит только 5 звуковых каналов. Под остальными тремя каналами подразумеваются каналы штатной микросхемы PSG, присутствующей в любом компьютере стандарта MSX.

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

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

Технические характеристики

[править | править код]
  • Звукогенератор:
    • 5 каналов, генерирующие сигнал определяемой пользователем формы:
      • Каждый канал имеет 32 байта ОЗУ, в котором хранится описание формы генерируемого сигнала (каналы 4 и 5 разделяют одно ОЗУ)
      • 16 уровней громкости
      • Диапазон генерируемых частот от 27 Гц до 111.25 КГц
  • Управление памятью:
    • 4 окна по 16 КБ в адресном пространстве процессора
    • Существующие игры имеют объём до 256 КБ


Список игр

[править | править код]

Микросхема SCC присутствует на плате картриджа следующих игр MSX (в скобках — код картриджа и год выпуска):

Официальные игры, поддерживающие SCC, выходившие на других носителях:

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

Эмуляция SCC реализована во многих современных эмуляторах компьютеров MSX, а также в мультисистемном эмуляторе игровых автоматов MAME. Также SCC поддерживается плагинами для воспроизведения музыки в формате KSS.

Технические подробности

[править | править код]

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

Звук генерируется полностью цифровой схемой, и выдаётся в виде параллельного 6-разрядного кода, преобразуемого внешним 11-разрядным ЦАП (простейшая цепная R-2R схема) в аналоговый сигнал.

Ниже приводится техническое описание процесса программирования микросхемы на компьютерах 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:

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

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

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

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

[править | править код]

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

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

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

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

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

Если биты 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 не участвуют в дешифрации адреса.