Сегодня в центре нашего внимания Sega Mega Drive, она же Genesis — называйте как хотите, всё равно все понимают, что речь идёт о некогда популярнейшей в наших краях 16-битной консоли. Comix Zone, Sonic the Hedgehog, Ultimate Mortal Kombat — вот это вот всё. Но речь пойдёт не о платформе в целом, а об одной специфической её части: звуковой системе и звуках, которые она издавала. Изучим железную и программную части, вспомним холивары, послушаем кое-какую музыку.
Как обычно, я занимаюсь не простым пересказом сомнительных источников, а сложным: пропускаю их через личный опыт. Когда-то давно я разработал несколько homebrew-игр для этой платформы, а также пару музыкальных редакторов — ныне забытых, но в определённый исторический период сыгравших свою роль. Этот бэкграунд даёт мне возможность сорвать покровы и рассказать всю правду о некоторых не самых очевидных моментах. Приступим!
▍ Исторический контекст
Выбранная мной тема, конечно, неразрывно связана с отголосками давнего великого противостояния двух 16-битных столпов, Sega Genesis и Super Nintendo. В попытках разобраться, какой из фломастеров слаще, игроки сталкивали лбами все их возможные аспекты, в том числе и озвучку игр. В этих многолетних спорах было сломано немало копий, хотя в ретроспективе ответ лежит на поверхности: обе системы имели свои сильные и слабые стороны, а качество результата в конечном счёте зависело прежде всего от мастерства разработчиков.
Четвёртое поколение игровых консолей особенно отличилось именно в области звука, как никогда до и после этого. Дело в том, что платформы предыдущего поколения использовали плюс-минус одну и ту же технологию для воспроизведения звуков. В четвёртом же поколении все игроки рынка пошли принципиально разными путями, получив уникальное, легко различимое и узнаваемое звучание. Больше такая ситуация уже не повторялась — пятое поколение принесло в игры потоковое аудио, которое всюду звучит плюс-минус одинаково.
Sega Mega Drive первой модели
Sega Genesis содержит в своём составе сразу два синтезатора звука, один попроще, другой посложнее. Это действительно синтезаторы: они создают звук «из ничего», по определяемому самим устройством синтезатора алгоритму. Каждый звук описывается небольшим набором параметров, объём данных для описания одного звука составляет единицы и десятки байт данных. Возможны только такие звуки, на какие способно устройство синтезатора.
По сути это развитие подхода предыдущего поколения, как на той же Денди, только в более развитой форме. Условный минус в «нереалистичном» звучании: на слух эти звуки, собственно, синтетические, и лишь отдалённо напоминают звучание реальных инструментов, хотя отдельные тембры могут получаться и вполне убедительно.
Есть и плюсы: музыка занимает мало места на картридже, а синтезатор позволяет менять параметры в реальном времени, создавая протяжённые во времени (десятки секунд), изменчивые по гармоническому составу тембры. Эти возможности очень хорошо подходят для «электронной» музыки, звучание которой изначально имеет подобное синтетическое звучание.
Имитация реальных инструментов такими синтезаторами придаёт звуку специфическую окраску, которую можно считать особой эстетикой той видеоигровой эпохи — например, характерное звучание рок-музыки с её совершенно синтетическими электрогитарами, которые, тем не менее, легко опознаются на слух как таковые.
Super Nintendo Entertainment System
Super Nintendo вместо «настоящего» синтезатора, создающего звук из набора параметров, содержит проигрыватель, воспроизводящий короткие цифровые записи реальных инструментов, оцифровки или «сэмплы». Формально это даёт возможность воспроизводить абсолютно любые звуки, и реалистичные, и синтетические, и в том числе точно такие же, какие может воспроизводить Sega Genesis.
Но есть подвох: сэмплы занимают тысячи байт, а звуковая память в системе очень небольшая и вмещает всего пару секунд звука в условно-хорошем качестве. Это вынуждает идти на множество компромиссов: используются только очень-очень небольшие фрагменты звучания отдельных инструментов, буквально доли секунд от начала звука, так называемая «атака», от которой зависит узнаваемость инструмента, и очень короткий зацикленный фрагмент протяжённой части звука.
Из-за нехватки памяти нет возможности создавать длительные изменчивые тембры, приходится понижать качество, не получается воспроизвести правильные обертона, из-за чего те же электрогитары звучат максимально синтетически. Тем не менее, в среднем музыка звучит более похоже на настоящую. Особенно этой технологии удаются оркестровки, ставшие визитной карточкой звучания Super Nintendo.
NEC PC Engine
Для полноты картины конкурирующих технологий упомяну, что на рынке был и третий крупный игрок — малоизвестная в наших краях игровая консоль PC Engine (TurboGrafx-16). Формально она стала первой ласточкой четвёртого поколения, хотя технически это скорее промежуточное звено, поколение три-с-половиной. В ней также использовался иной подход к синтезу звука, находящийся где-то посередине между Genesis и Super Nintendo.
PC Engine тоже использует цифровые сэмплы, но иным образом. Они экстремально короткие: всего один период частоты, 32 отсчёта, что требует значительно меньшего расхода памяти. Если вы слышали термин «табличный синтез» (wavetable), изначально он подразумевал именно подобный способ синтеза, а не то, что начали называть так в последующие годы. В отличие от больших сэмплов на Super Nintendo он позволяет динамическое изменение тембра. Например, с помощью интерполяции можно плавно преобразовать одну табличку в другую, и характер звука тоже плавно изменится. Звучит такой синтез гармонически богато, но не реалистично.
Super Nintendo также способна на подобное звучание, однако из-за особенностей реализации не настолько чистое и с меньшими возможностями манипуляции. Несмотря на ограничения, элементы такого подхода успешно применялись в некоторых играх. Например, его можно услышать в серии Donkey Kong Country.
▍ Звуковая система
На предшествующих 8-битных платформах звуковая система была представлена единственным звуковым чипом-синтезатором, которым управлял напрямую центральный процессор. Игровые консоли четвёртого поколения начали использовать более комплексные решения. Их видео и звуковая подсистемы стали хорошо обособленными, почти автономными единицами, со своей собственной памятью и вычислительными ресурсами. В особенности это касается звуковой части: теперь это целый выделенный микрокомпьютер для звука.
Блок-схема архитектуры Sega Genesis
Устройство Sega Genesis тоже последовало этому тренду. Её звуковая система содержит две разных микросхемы синтезатора звука, условно называемых PSG и FM, и микропроцессор Z80 со своим собственным ОЗУ. Также есть элементы общей системы, обеспечивающие интеграцию и оказывающие значительное влияние на решение задачи воспроизведения звука: арбитр шин и переключатель банков, предоставляющий Z80 доступ ко всему адресному пространству памяти.
Нужно отметить, что звуковая система в Genesis носит двойное назначение, и, вероятно, именно это определило детали её устройства. Дело в том, что Sega — давний игрок рынка, ранее она выпустила два поколения игровых консолей и установила традицию обеспечения обратной совместимости между поколениями. Вот и на этот раз Genesis была создана обратно совместимой с предыдущей 8-битной Master System. Поэтому компоненты звуковой системы Genesis по совместительству являются компонентами, необходимыми для работы консоли в режиме Master System.
Power Base Converter
Разъёмы картриджей у этих консолей отличаются, и штатно в Genesis предусмотрен только один, собственного нового формата. Переход в режим обратной совместимости осуществляется с помощью адаптера Power Base Converter, содержащего разъём картриджа и набор соединений, переводящих консоль в режим аппаратного эквивалента Master System. То же самое сейчас способны проделывать современные Flash-картриджи, позволяя запускать на Genesis большинство игр для восьмибитного предшественника.
В собственных же 16-битных играх Genesis процессор Z80 и его память могут быть задействованы для управления звуковыми чипами. Но не обязательно — основной процессор Motorola 68000 может обходиться и полностью своими силами, и в разных играх используются разные подходы. Где-то звуком занимается основной процессор, где-то только Z80, а где-то эти задачи распределены между ними. Общий тренд со временем склонился к полному переносу всех звуковых задач на Z80, чтобы выделить больше ресурсов основного процессора для самой игры.
Две ревизии плат: Mega Drive 1 VA2 и Mega Drive 2 VA4
С высоты исторического опыта легко указывать на детали, важность которых едва ли мог кто-то представить во время разработки системы в 1987-88 годах, когда звук в видеоиграх только-только поднялся с колен. Но всё же, стоит упомянуть, что в устройстве звуковой системы есть некоторые упущения. Это отсутствие прерываний для Z80 от предусмотренных в составе YM2612 таймеров и весьма специфический способ переключения банков памяти. Немного иное решение этих вопросов едва ли повлияло бы на конечную стоимость устройства, но сделало бы звучание оцифровок значительно лучше.
Аппаратура Sega Genesis имела множество ревизий. Изначально почти все компоненты системы были представлены настоящими оригинальными микросхемами — в том числе Z80 и его память, YM2612, и лишь PSG сразу был интегрирован в чипсет. Постепенно почти все детали, включая даже центральный процессор, но исключая ОЗУ и кодер цвета, были интегрированы в один большой чип.
Настройки звука в эмуляторе Gens/GS
В разных эмуляторах предусмотрено отключение отдельных компонентов звуковой системы, в результате которого пропадает соответствующая часть или весь звук, а также управление включением или громкостью отдельных каналов. Поэтому при желании можно наглядно услышать, что за что отвечает в различных играх. Другие эмуляторы также позволяют просматривать состояние компонентов звуковой системы. К сожалению, одного эмулятора, где были бы представлены все опции в удобном виде, мне найти не удалось.
Теперь рассмотрим все элементы звуковой системы по отдельности.
▍ PSG
Начнём с простого, первого звукового чипа, доставшегося Sega Genesis в наследство от Master System. Формально он предназначен для обратной совместимости, и обладает весьма простым звучанием, можно сказать, «прошлого поколения». Но 16-битные игры могут использовать его совместно с основным FM-синтезатором, и нередко дополнение звучания с помощью PSG выделяет лучшие саундтреки платформы среди равных. Применяется PSG примерно в половине библиотеки игр на консоли.
Микросхема SN76489
Начинал свой жизненный путь чип под индексом TMS9919. Вместе с видеоконтроллером TMS9918 он был разработан компанией Texas Instruments специально для её собственного компьютера TI99/4 аж в 1977 году. Но уже через пару лет эта же парочка чипов вышла на свободный рынок, и вместе либо по отдельности легла в основу множества консолей второго и третьего поколений и современных им домашних компьютеров.
За время скитаний по платформам чип успел получить несколько наименований, из которых наиболее известным стало SN76489. Сама Texas Instruments обозначала его как DCSG — Digital Complex Sound Generator, однако класс чипов с аналогичной архитектурой и возможностями (AY-3-8910, SID) также получил расхожее наименование PSG, от Programmable Sound Generator, и именно оно исторически приклеилось к реализации чипа в составе Sega Genesis
Блок-схема SN76489
Технически PSG довольно похож на своего прямого конкурента, чуть более поздний AY-3-8910, но значительно проще по возможностям. Он содержит три канала тона с управлением громкостью, а также отдельный канал шума. Формально чип имеет трёхголосую полифонию, но с некоторыми оговорками.
Одинаковые по устройству каналы тона состоят из 10-битного счётчика-делителя и «аттенюатора», который выполняет роль регулятора громкости. Входная тактовая частота чипа 4 МГц внутри него сначала делится на 32, а потом на заданное значение от 1 до 1023 (значение делителя 0 в местной реализации равнозначно 1). Аттенюатор ослабляет сигнал на некоторое значение, всего 16 уровней ослабления от нормальной громкости до полной тишины. Функционально это эквивалент ЦАП в AY, но с инверсией управляющих бит.
Малая разрядность счётчиков ограничивает точность музыкального строя, а высокая тактовая частота, выбранная из соображений обеспечения достаточной точности, устанавливает нижний предел частоты в 109 герц — нота Ля второй октавы. Это самый верх типичного диапазона басовых партий в современной популярной музыке, что ограничивает возможности построения басовых партий и выбора тональности. По этой причине музыка в играх на Master System имеет довольно высокое звучание, а в играх для Genesis PSG часто исполняет отдельные партии в верхнем регистре.
Устройство генератора шума
Главной особенностью чипа является канал шума. Он состоит из 16-битного LFSR с длиной псевдослучайной последовательности в 65536 бит, собственной минимальной схемы деления тактовой частоты и дополнительных опций коммутации.
В основном режиме канал шума имеет отдельное управление громкостью, как у каналов тона, но всего три «высоты» звучания, определяющих высокочастотную составляющую спектра: низкая, средняя и высокая. Полное управление высотой возможно за счёт использования счётчика-делителя одного из каналов тона. При этом громкость продолжает раздельно работать для обеих каналов, а частота тона и спектр шума меняются синхронно.
Также генератор шума имеет опцию уменьшения длины псевдослучайной последовательности до 16 бит. На слух это воспринимается как не очень чисто звучащий тон с высотой в 16 раз ниже заданной. Это позволяет обойти ограничение на диапазон басовых нот ценой своеобразного звучания и потери как одного канала тона (для управления высотой через его счётчик), так и основного режима канала шума. И хотя грамотно спланированное переключение режимов в грамотной аранжировке позволяет успешно маскировать эти ограничения, в коммерческих играх прошлых лет к такой технике прибегали крайне редко.
Карта внутренних регистров PSG
Управляется PSG единственным внешним 8-битным портом, через который можно запрограммировать восемь внутренних управляющих регистров. В зависимости от состояния старших бит байта, можно выбрать регистр и записать в него 4 или 6 бит соответствующего параметра.
▍ FM
Второй звуковой чип Sega Genesis — так называемый FM-синтезатор, работающий на основе метода «частотной модуляции». Это основной синтезатор для 16-битного режима, обладающий значительно более разнообразным звучанием и повышенной полифонией.
Изобрели метод частотной модуляции в США в 60-х годах. Основная идея заключается в модуляции частоты генератора синусоидального сигнала другим аналогичным генератором. Это позволяет создавать широкую палитру гармонически богатых звуков с помощью простых технических средств.
Важную роль в развитии этой техники сыграл Джон Чоунинг, разработавший и запатентовавший цифровую реализацию в середине 1970-х годов. На основе его патента инженеры японской компании Yamaha в середине 1980-х разработали метод «фазовой модуляции», более простой в реализации и практически эквивалентный по получаемым результатам. Исторически так сложилось, что в документации Yamaha её синтезаторы по-прежнему обозначаются как FM-type.
На протяжении 1980-х и 1990-х годов Yamaha выпустила огромное количество реализаций своих FM-синтезаторов, как в формате профессиональных музыкальных инструментов, так и в виде нескольких семейств микросхем разной степени сложности и цены: и мощные решения для компьютеров и аркадных автоматов, и максимально бюджетные для электронных игрушек, и любые варианты посередине. Эти синтезаторы пробрались и надолго закрепились даже в западном IBM PC, в составе звуковых карт Adlib и Sound Blaster.
Помимо самостоятельных разработок, Yamaha, как и многие производители микроэлектроники, сотрудничала с различными заказчиками, в том числе с компанией Sega. Так, Yamaha разработала видеосистему для Master System, а для Sega Genesis помимо видеоконтроллера YM7101, получившего системное обозначение Sega 315-5313, была разработана и специализированная версия FM-синтезатора семейства OPN, микросхема YM2612.
Микросхема YM2612
YM2612 имеет довольно сложное внутреннее устройство, которое можно разделить на простые функциональные блоки. Возможности чипа:
- Шесть каналов FM-синтеза.
- Четыре генератора в каждом канале и восемь способов их коммутации.
- Опциональный режим ЦАП.
- Опциональный режим разделения операторов.
- Управление стерео-панорамой.
- Модулятор для эффектов типа «вибрато» и «тремоло».
- Два таймера для отсчёта периодов.
Каждый канал содержит четыре цифровых генератора сигнала синусоидальной формы, называемых «операторами», генераторы их огибающих, и способ соединения, операторов, называемый «алгоритмом».
Высота звука в каждом канале устанавливается одним 14-битным значением. Оно значительно отличается от PSG и подобных чипов: это не счётчик-делитель, а 3-битный номер октавы (называемой) «блоком» и 11-битное значение высоты звука в пределах октавы. По сути это аккумулятор, и расчёт значения учитывает как тактовую частоту, так и собственную внутреннюю частоту дискретизации YM2612.
Огибающая YM2612
Каждый оператор имеет параметры множителя исходной частоты и степени небольшого отклонения от неё. Это позволяет создать разные соотношения частот операторов для получения разных гармонических спектров.
У всех операторов есть собственный генератор ADSR-подобной огибающей, содержащей параметры скорости нарастания, спада, отпускания клавиши, максимального уровня и уровня удержания. Перезапуск огибающих операторов при начале новой ноты может выполняться одновременно или раздельно.
Огибающая определяет изменение выходного уровня оператора во времени. Если этот оператор подключён к выходу канала, огибающая управляет амплитудой, а если ко входу другого оператора — то степенью модуляции. Отдельного прямого управления громкостью каналов не предусмотрено.
Алгоритмы соединения операторов YM2612
Соединение операторов между собой устанавливается выбором одной из восьми возможных схем. В первой из них все операторы включены последовательно, модулируя друг друга по цепочке, а в последней — параллельно, выдавая на выход четыре разные высоты звука. Остальные схемы представляют собой различные промежуточные варианты.
У первого оператора всегда есть возможность модуляции самого себя собственным выходом, что обогащает гармонический состав сигнала, от незначительного изменения тембра до шума.
Также в чипе присутствует один общий для всех каналов низкочастотный модулятор с восемью возможными частотами работы в диапазоне 4-72 герц. Его выход может опционально влиять на высоту звука или выходную амплитуду каждого канала по отдельности в нужной степени, от слабой до сильной.
Особый режим работы третьего канала позволяет раздельно устанавливать частоты каждого из его операторов. Это позволяет создавать более сложные тембры, либо получить до четырёх более простых голосов. Такая возможность редко применялась в играх, но она позволяет ещё больше увеличить полифонию.
Также для каждого канала можно выбрать один из трёх вариантов стереофонической панорамы, звук только слева, справа или посередине.
Карта регистров YM2612
Управляется чип семью десятками регистров, доступных через четыре 8-битных порта ввода-вывода. Структурно чип разделён на два отдельных трёхканальных «банка», каждый из которых управляется одинаковым образом через свою пару портов. В первый порт записывается номер внутреннего регистра чипа, во второй порт — значение для него. Регистр частоты требует двух последовательных записей, чтобы новое значение вступило в силу.
Особенностью внутреннего устройства чипа является применение мультиплексирования элементов генератора и наличие встроенного последовательного ЦАП (у многих чипов он внешний). Использование мультиплексирования означает, что вместо многих копий отдельной схемы для работы каждого из каналов применяется одна и та же, быстро переключаемая между каналами.
Кристалл YM2612 и расположение функциональных блоков
Чип не может принимать новую информацию от управляющего устройства в любой момент времени — нужно дождаться его готовности, либо проверяя соответствующий флаг регистра статуса перед записью значения в регистр, либо выжидая максимальное время для гарантии готовности. Чип реагирует не очень быстро, нужно стараться минимизировать количество изменений регистров.
Архитектура чипа подразумевает определённую частоту дискретизации, на которой он генерирует новые отсчёты. Это влияет на более сложный расчёт значений для получения желаемой высоты звука, а также на способности чипа в области воспроизведения оцифровок, о чём мы поговорим далее.
▍ DAC
Я вынес вопрос проигрывания «оцифровок» или «сэмплов» в отдельный раздел, потому что он не строго привязан к конкретному устройству.
Как правило, оцифровки на Genesis имеют довольно низкое качество звучания и используются в количестве одного-двух каналов для перкуссионных звуков (барабанов) в музыкальном сопровождении, а также части игровых звуковых эффектов реалистичного характера, типа возгласов. Типичный цифровой звук имеет низкую частоту дискретизации, 8-12 кГц, и весьма нестабильную скорость воспроизведения, выражающуюся в хриплом, «шершавом», прерывистом звучании.
Основное устройство воспроизведения оцифровок, используемое в большинстве игр — режим ЦАП, реализованный внутри YM2612. Если переключить режим шестого канала, FM-синтезатор на нём перестаёт работать, но становится доступным простейший пассивный 8-битный ЦАП, подобный классическому Covox: записанное в регистр значение амплитуды передаётся сразу на выход канала.
Никаких других аппаратных средств для воспроизведения звуков не предусмотрено. Нет буферизации, нет прерываний по таймеру. Стабильность потока сэмплов должен обеспечивать код, обращающийся к ЦАП — это может делать и Z80, и 68000. Смешивание нескольких цифровых каналов или сжатие звука методами типа ADPCM также не предусмотрено — всё это реализуется программно, и действительно применялось в некоторых играх.
Качество звучания очень сильно зависит от кода, и чистое звучание достижимо, если код выполняется на Z80 и успешно избегает ситуации блокирования. Во времена коммерческой жизни платформы разработчики не обладали глубоким пониманием проблемы. Только после возникновения глубокого понимания устройства системы, в 2010-х годах, энтузиасты смогли значительно улучшить звучание некоторых коммерческих игр за счёт улучшения кода, не заменяя исходные сэмплы.
Секрет лучшего звука заключается в том, чтобы Z80 успел буферизировать данные сэмплов из ПЗУ во время активного растра и не обращался к ПЗУ при обратном ходе луча — тогда он не заблокируется на время DMA. Но реализовать это нелегко, учитывая способ переключения банков и сложность синхронизации процессоров.
Что касается частоты дискретизации, при использовании ЦАП YM2612 она ограничена 53 кГц — это внутренняя частота дискретизации чипа. При дальнейшем повышении частоты воспроизведения часть байт будет просто пропускаться, могут возникать артефакты алиасинга. Но на практике настолько высокие частоты в реальных играх прошлого не использовались.
В десятке игр для вывода цифрового звука используются каналы PSG. При установке для них минимального делителя генерируемая частота уходит за пределы слышимости, но остаётся возможность установить уровень громкости. Таким образом аттенюаторы чипа превращаются в 4-битный нелинейный ЦАП. Это позволяет получить до четырёх независимых каналов цифрового звука, и хотя качество звучания получается невысоким, есть преимущества: эти каналы не нужно программно складывать.
Помимо этих двух вариантов, крайне редко встречаются и иные, экзотические, задействующие регулировку уровня в FM-синтезаторе нестандартным образом.
Одно из лучших достижений времён коммерческой жизни в области цифрового звука на Genesis — проигрыватель MOD-формата на титульном экране игры Toy Story. Он воспроизводит четырёхканальную музыку с реалистичными инструментами вместо использования FM-синтезатора. Почти Super Nintendo!
▍ Z80
Сам по себе 8-битный процессор Zilog Z80 хорошо известен человечеству, и говорить здесь особо не о чём. Но есть много деталей относительно того, как именно он используется в архитектуре Sega Genesis.
Zilog Z80 собственной персоной
В Sega Genesis Z80 работает на частоте 3.58 МГц и находится на своей отдельной независимой шине. Также на ней находится его собственное ОЗУ, регистры всех звуковых чипов, и окно в мир, а точнее, в память основной системы, включая основное ОЗУ и картридж.
Основной процессор 68000 через арбитр шины может захватить шину Z80, остановив его работу. После этого он может скопировать в ОЗУ Z80 нужный код, освободить шину, и сбросить Z80, чтобы программа начала выполняться с нулевого адреса.
Для прямой работы с устройствами, находящимися на шине Z80, то есть со звуковыми чипами, также нужно захватить шину, что остановит работу Z80 — это одна из сложностей, если программе требуется разделить использование звуковых устройств между процессорами.
Карта адресного пространства Z80
Адресное пространство Z80 делится на две половины по 32 килобайта. В нижней половине находится его 8-килобайтное ОЗУ, регистры звуковых чипов, регистр выбора банка основной памяти. Эти ресурсы доступны для Z80 в любое время. В верхней половине располагается 32-килобайтное окно, через которое возможен доступ к ресурсам основной шины, то есть к памяти картриджа.
Выбор 32-килобайтных страниц сделан довольно нетривиальным образом: требуется произвести девять последовательных записей в 8-битный регистр банка. Из каждой записи берётся один бит, заполняющий 9-битный сдвиговый регистр. Таким образом, регистр банка позволяет адресовать до 16 мегабайт адресного пространства (2 в девятой степени умножить на 32К).
Подобная процедура смены банка очень медленная по своей натуре, и это сильно осложняет реализацию многоканальных проигрывателей сэмплов: если сэмплы находятся в разных банках, нужно постоянно переключаться между ними. Проблему помогает решить чтение блоками и буферизация данных в ОЗУ Z80.
ld bc,BANK_NUMBER ;9-битный номер банка
ld hl,0x6000
ld a,c
ld (hl),a ;A15
rra
ld (hl),a ;A16
rra
ld (hl),a ;A17
rra
ld (hl),a ;A18
rra
ld (hl),a ;A19
rra
ld (hl),a ;A20
rra
ld (hl),a ;A21
rra
ld (hl),a ;A22
ld (hl),b ;A23
Чтобы обойти сложности, связанные с переключением банков, данные для Z80 стараются располагать в памяти картриджа без пересечения 32-килобайтных границ. Это не аппаратное ограничение, а программная оптимизация времени доступа. Ещё одна возможная хитрость — запись нулей вместо старших бит регистра банка, что ограничивает адресуемое пространство, но позволяет сделать выбор банка немного быстрее.
Большая проблема, связанная с арбитражем шин двух процессоров — прямая пересылка (DMA) из основной памяти в видеопамять. Она используется практически в каждой игре, так как время доступа к видеопамяти ограничено, а DMA обладает максимальной скоростью. Однако, если Z80 также обращается к основной шине для доступа к памяти картриджа, для стабильной работы системы на время DMA-пересылки Z80 нужно останавливать.
Такая ситуация возникает, например, при проигрывании сэмплов, потому что они имеют объём порядка десятков килобайт, а объём ОЗУ Z80 ограничен 8 килобайтами. Возможный выход из этой ситуации — не обращаться к основной памяти, выполнять только код из ОЗУ Z80. Для этого данные сэмплов нужно буферизировать в свободное от работы DMA время.
▍ Чистый звук
Из-за большого количества ревизий аппаратуры на Sega Genesis (примерно полтора десятка) сложилась ситуация, что хотя все они равны по возможностям, звучание некоторых из них отличается довольно радикальным образом.
Первая проблема относится к вопросу предпочтений и связана с заменой реализации FM-синтезатора.
YM3438
В ранних ревизиях используется исконная микросхема YM2612, содержащая в своём составе 9-битный ЦАП, использование которого разделяется по времени между шестью каналами. В этой реализации наблюдается специфическое ступенчатое изменение громкости на её малых уровнях, хорошо заметное на слух. Некоторые композиторы, например, Юдзо Косиро, учитывали наличие этой особенности и применяли её в качестве художественного эффекта.
В более поздних ревизиях началось применение функционально аналогичной КМОП-версии синтезатора, YM3438. Сначала она была реализована в формате отдельного чипа, позже интегрирована в общий чипсет. Возможности этой версии полностью совпадают с YM2612, но отличаются детали реализации. В частности, проблема ступенчатой громкости была значительно уменьшена, что заметно отразилось на звучании музыки. Также изменилось поведение флага занятости чипа, это привело к проблемам совместимости с единичными играми.
Самодельный Crystal Clear Audio Mod. Фото из Интернета
Вторая проблема является объективным недостатком и связана с аналоговой частью: микшером звуковых источников и их усилителем.
Как правило, эту проблему связывают с низким качеством аналоговых компонентов в некоторых ревизиях консоли — в частности, операционных усилителей, а также к не очень удачному схемотехническому решению в целом. Разница звучания «неудачных» ревизий очень заметна: они обладают глухим, искажённым звуком с высоким уровнем шума.
Энтузиасты платформы часто прибегают к модификации, полностью заменяя аналоговую часть. Известны различные вариации, например, Crystal Clear Audio Mod, устраняющий все недостатки и обеспечивающий максимально чистый, не ограниченный в высокочастотной составляющей звук. Такие доработки, однако, могут проявлять проблемы аранжировок, при создании которых не предполагалось такое качество звучания — излишне высокочастотные звуки и нежелательные призвуки.
▍ Драйверы
Немаловажным понятием в консольном звуке являются так называемые «драйверы». В данном контексте это не драйверы устройств, которые в Windows, а код, проигрывающий музыку, то есть «проигрыватель».
Хотя каждый звуковой чип-синтезатор способен делать только то, что заложено в его конструкцию, потенциал его возможностей ещё нужно раскрыть. Зависит раскрытие от двух факторов: технического и творческого. Технический фактор представлен самим драйвером, а творческий — мастерством композитора, умением максимально эффективно применять возможности и чипа, и драйвера.
Лучшие композиторы первых лет существования видеоигровой индустрии по совместительству сами являлись программистами, и разрабатывали собственные драйверы с пониманием реальных потребностей нужд композитора. Со временем это позволило им добиться выдающихся результатов.
Позже, уже во времена консолей третьего поколения, возникла вполне разумная практика разделения труда: одни люди писали драйверы, другие — музыку. Это дало неоднозначные результаты: кому-то из композиторов это помогло ещё больше развить своё мастерство, а другие, напротив, не могли эффективно задействовать предложенные им возможности. Ведь теперь разработчик драйвера не всегда понимал, какие возможности действительно нужны, а какие не особо, а композитор не всегда понимал, как это работает.
Но что именно может отличать драйверы между собой, если набор возможностей звукового железа всегда остаётся неизменным?
На самом деле, очень многое: аппаратные синтезаторы ничего не знают про такую высокоуровневую концепцию, как музыка. Они оперируют исключительно отдельными звуками и командами типа «установить высоту», «установить громкость». Необходимые для сложения отдельных звуков в музыку возможности реализует драйвер, преобразуя высокоуровневые данные музыкальной аранжировки в низкоуровневые записи отдельных регистров.
Драйверы могут быть реализованы и на стороне Z80, и на стороне 68000, и даже в распределённом варианте: более высокий уровень с парсингом музыкального текста обрабатывает 68000, а код для Z80 обрабатывает более элементарные команды, такие как проигрывание отдельных нот.
Среди отличий их возможностей может быть разная частота обновления и разный способ её организации: или регулярный таймер с разной частотой, или отсчитываемые с помощью таймеров YM2612 разные временные промежутки между музыкальными событиями.
Некоторые драйверы устанавливают FM-инструменты однократно в начале композиции, что делает звучание более простым, а другие, например, в Contra Hard Corps, меняют тембры динамически, обогащая тембральное разнообразие.
Самые продвинутые драйверы реализуют систему «макросов», дополнительных программных огибающих для прочих параметров синтеза, например, множителя частоты оператора. Это позволяет добиваться более сложного, насыщенного звучания, что демонстрирует, например, маэстро Тим Фоллин в саундтреке оставшейся неизданной игры Time Trax.
Наконец, часть драйверов обходится только шестью каналами FM-синтезатора, тогда как другие добавляют поддержку PSG и одного или нескольких программных каналов с оцифровками, воспроизводимых через DAC.
Не стоит забывать и о поддержке звуковых эффектов. Не все каналы чипов можно использовать для музыки, потому что какие-то нужно оставить для эффектов в игре. FM-синтезатор по своей природе не позволяет реализовать доступные для PSG техники с маскированием одного звука другим: нельзя начать играть один звук, прервать другим, и продолжить предыдущий с нужного места. Поэтому нередко на музыку отводится только четыре FM-канала из шести.
Количество самых разных драйверов, используемых в играх для Sega Genesis, велико: десятки, со множеством вариаций. Как правило, они встречаются в играх больше одного раза, а некоторые и вовсе использовались десятки раз. Энтузиасты и по сей день продолжают изучать цифровое наследие и составлять подробный список драйверов и игр, в которых они применялись. Его можно посмотреть где-то здесь.
Подробный разбор хитросплетений взаимоотношений драйверов, игр и композиторов — кто откуда кому что куда позаимствовал — потребовал бы отдельной статьи, поэтому не буду углубляться. Но особо отметить нужно два драйвера, применявшихся в очень многих играх платформы, определившие два крайности её звучания.
Интерфейс редактора GEMS
Легендарный драйвер GEMS был разработан компанией Recreational Brainware для Sega of America и использовался в паре сотен игр.
На самом деле это не просто драйвер, а полноценное решение для создания звука в играх, Genesis Editor for Music and Sound effects. Оно содержит редактор для MS-DOS с оконным, но довольно нетривиальным интерфейсом, а также специальный картридж с MIDI-подключением. Стабильность работы системы подчёркивалась первыми строками в документации: REMEMBER TO MAKE FREQUENT BACKUPS!
GEMS был призван решить проблему освоения западными разработчиками непонятного для них FM-синтезатора. Выполнил он эту задачу частично: хотя технически это было грамотное, мощное решение, его тоже было сложно освоить, в результате чего сильно страдало качество. Часто GEMS называют главной причиной худшего звучания музыки в западных играх — хотя были драйверы и похуже.
Зато в заслугах GEMS многие хиты платформы: Comix Zone, Dune II: Battle for Arrakis, Vectorman, Earthworm Jim и многие другие. Худшим же примером, пожалуй, можно назвать порт Doom на Sega 32X.
GEMS поддерживает FM, PSG и сэмплы для перкуссии. Рабочий процесс подразумевает конверсию заранее созданных и специальным образом подготовленных MIDI-файлов, в которых уже заранее ограничена полифония. В редакторе самого GEMS создавались и назначались FM-инструменты, устанавливались параметры и конвертировались прочие звуки.
Фактическое звучание получающейся композиции во время редактирования на компьютере просто так услышать было нельзя, нужно было подключить консоль со специальным картриджем. При таком предварительном озвучивании качество воспроизведения оцифровок было сильно ниже, чем в финальных играх. Это тоже влияло на качество: непросто добиться хорошего результата, не имея средств прямого контроля.
Другой широко используемый драйвер разработки Sega of Japan носит условное название SMPS, Sample Music Playback System, восстановленное энтузиастами в результате раскопок различной документации и исходного кода. Истинное название этого драйвера неизвестно.
SMPS существует во множестве вариаций и также применялся в десятках игр, начиная с самых ранних и совершенствуясь со временем. Здесь есть и версии только для 68000, и для Z80, с поддержкой различных опций.
В зависимости от исторического периода игры с использованием этого драйвера тоже способны звучать неважно, или же очень даже хорошо. Среди лучших примеров немало хитов платформы: достаточно назвать все части Golden Axe и все номерные игры серии Sonic the Hedgehog, все Shinobi, первый Streets of Rage.
Теперь коротко упомяну драйверы от других разработчиков, показавшие звуковые и музыкальные возможности платформы с лучшей стороны.
Пожалуй, самый необычный по звучанию драйвер на платформе — компании Zyrinx. Связано оно, конечно, с талантом Йеспера Кида, сумевшего раскрыть его потенциал и выдать уникальное, модное европейское звучание в стиле «техно», которое можно слышать в играх Red Zone, Sub-Terrania и Batman & Robin.
Драйвер компании Sunsoft за авторством Шиничи Сея не так часто использовался в играх и не всегда выдавал впечатляющее звучание. Однако, в руках Наоки Кодака в нём родился один из главных музыкальных хитов платформы, саундтрек игры Batman The Videogame, часто используемый в качестве мерила между плохим и хорошим звучанием игр для Genesis.
И конечно, драйвер Konami в руках множества талантливых композиторов этой компании практически всегда выдавал совершенный эталон качества — именно так и должна звучать Sega Genesis. Вы сами всё знаете: Castlevania Bloodlines, Contra Hard Corps, Rocket Knight Adventures, Sunset Riders, Lethal Enforcers.
Перепись всех остальных интересных драйверов и самых крутых саундтреков, которые объём статьи не позволил притянуть за уши, при желании можно устроить в комментариях. Сотни их!
В целом же можно сказать, что наилучшим образом смогли показать музыкальный потенциал Sega Genesis японские разработчики и композиторы, так как они уже имели опыт работы с подобными синтезаторами в музыке, на аркадах и на местных японских домашних компьютерах. Западные же разработчики в среднем не имели подобного опыта и времени разбираться, и нередко выдавали посредственный результат.
Приближаясь к завершению рассказа, стоит отметить пример современного драйвера с открытым исходным кодом, созданного энтузиастами для применения в новых разработках: Echo. Разумеется, он учитывает весь накопленный поколениями разработчиков опыт и поддерживает всё, что может понадобиться: FM, PSG вместе со всеми режимами шума, сэмплы с частотой 10 кГц, разделяющие шестой канал с FM-синтезатором.
▍ Наши дни
Как случалось и с прочими платформами, после окончания коммерческой жизни консоли началась её послежизнь в руках энтузиастов. Сейчас они делают новые игры, сочиняют музыку для них, или даже просто так, ради самой музыки, чтобы получить максимально аутентичное звучание.
В прошлом музыка для Genesis создавалась разными способами: через MML-скрипт, в байт-коде, через конверсию с последующей ручной доработкой из форматов MOD и MIDI. Все эти способы объединяет неудобство: полноценных музыкальных редакторов в современном понимании ещё не было, и это сильно увеличивало порог вхождения для композиторов.
Только с приходом на платформу разработчиков-любителей она обрела более современные инструменты. Для написания музыки для реальной консоли ныне они представлены широким ассортиментом редакторов-трекеров.
MVS Tracker
Первой ласточкой стал MVS Tracker в 2006 году. Название указывает, что изначально это был редактор, ориентированный на Neo-Geo MVS, мощный аркадный игровой автомат, имеющий в своём составе родственный звуковой чип YM2610. Отличается он, однако, наличием всего четырёх каналов FM-синтезатора, и в адаптированной для Sega Genesis версии трекера также присутствует подобное ограничение. PSG и DAC не поддерживаются.
TFM и VGM Music Maker
Чуть позже вышли мои разработки 2006-2011 годов: сначала TFM Music Maker, также ориентированный на родственный звуковой чип YM2203, с поддержкой экспорта для FM-части и драйвером для проигрывания музыки на Genesis, а потом его форк VGM Music Maker, где уже была добавлена более полноценная поддержка специфических для Genesis возможностей: PSG, DAC, LFO.
Deflemask
Следующим большим шагом стало появление в 2011 году мультиплатформенного и мультисистемного, но коммерческого трекера Deflemask, который среди прочих платформ поддерживал и Sega Genesis, включая её специфические особенности. Для использования созданной в нём музыки на реальной консоли был создан конвертер данных в формат упомянутого ранее драйвера Echo.
Furnace Tracker
Наконец, вероятно нынешний пик развития этого направления — проект furnace, стартовавший в 2021 году. По сути это совместимая реплика Deflemask с открытым исходным кодом, которая быстро получила мощнейшее развитие и уже поддерживает несметные полчища звуковых чипов и даже вымышленных устройств. Для прослушивания музыки на реальной консоли предусмотрен экспорт в формат VGM, существуют драйверы для его воспроизведения.
Также существовало несколько попыток создания нативного трекера, то есть работающего прямо на реальной Sega Genesis и управляемого с джойстика.
Prodigy Tracker и YMDj
Первой серией попыток стал амбициозный проект, по ходу разработки в 2014-2018 годах сменивший несколько названий: Prodigy Tracker, YMDj, Chaos Tracker. Было выпущено несколько видео и запускаемых демонстраций. Дальнейшая его судьба его мне неизвестна, все страницы на github ныне удалены — похоже, что до финала он не добрался.
MDTracker
Другой, более свежий проект — MDtracker. Работает только на ограниченном наборе эмуляторов и Flash-картриджей. Поддерживает FM, PSG, DAC.
Помимо инструментов для написания музыки для последующего воспроизведения на оригинальной консоли, существуют программные синтезаторы, аутентично воспроизводящие её звучание в рамках современных цифровых студий, то есть VSTi-плагины.
FMDrive
Главный из них — коммерческая парочка FMDrive и SPSG, максимально точно имитирующие, соответственно, FM и PSG-составляющие системы.
Также есть ряд бесплатных плагинов, отличающихся либо менее высоким качеством звучания, либо не очень удобным интерфейсом, но и они вполне применимы для любых творческих задач: VOPM и YM2612 VST для FM-синтезатора и SN-EMU, Soft PSG и ProtoPSG для PSG-синтезатора соответственно.
VOPM
Наконец, объединяют два мира решения, подобные GEMS, но реализованные в рамках современных цифровых студий: музыка пишется в MIDI, озвучивается VSTi-синтезатором, а результат можно экспортировать и преобразовать в воспроизводимый на реальной консоли вид.
На самом деле, я знаю только одно такое решение, свой собственный midi4vgm, который я применял в некоторых проектах, и оно не является публичным. Я предпочёл этот вариант трекерам из-за простоты создания музыки, хотя и в ущерб возможностям.
▍ Заключение
Сегодня мы узнали про сильные и слабые стороны звуковой системы Sega Genesis. В следующий раз покопаемся и в Super Nintendo. Никто не уйдёт безнаказанным!
© 2025 ООО «МТ ФИНАНС»
Telegram-канал со скидками, розыгрышами призов и новостями IT 💻