Как ошибка в звуковом чипе Commodore 64 подарила ему голос, о котором инженеры даже не думали
В 1984 году игроки нажимали пробел во вступлении к Ghostbusters на Commodore 64 и слышали то, чего физически не должно было существовать. Чёткое, узнаваемое «Ghostbusters!» — произнесённое голосом, а не пиликнувшее синтезаторной трелью. Для домашнего компьютера середины восьмидесятых это звучало как чудо.
Чуда не было. Была ошибка в чипе — причём такая, о которой инженеры Commodore, скорее всего, даже не подозревали, когда проектировали звуковую систему машины.
Регистр, который никто не планировал использовать так
В основе звука Commodore 64 лежал чип MOS 6581, известный под именем SID — Sound Interface Device. У него был регистр по адресу $D418, отвечавший за общую громкость звука. Использовались там только четыре младших бита — то есть теоретически регистр давал всего 16 градаций уровня, от полной тишины до максимума.
Каждое изменение значения в этом регистре сопровождалось лёгким щелчком. Само по себе это не считалось поломкой — просто побочный эффект резкого скачка амплитуды сигнала, вполне ожидаемое поведение для любой цепи такого рода.
А вот дальше начинается настоящая инженерная удача, замаскированная под баг. Программисты обнаружили: если менять значение в этом регистре очень быстро, одно за другим, десятки раз в секунду, отдельные щелчки перестают восприниматься ухом как щелчки. Они сливаются в подобие непрерывного звукового сигнала. По сути, регистр громкости, который вообще не задумывался как канал передачи звука, начал работать как самодельный четырёхбитный цифро-аналоговый преобразователь.
Причина, по которой этот трюк вообще получался, лежала в постоянном напряжении на аналоговом выходе чипа. У 6581 это напряжение задавалось напрямую от питания в 5 вольт, и именно эта особенность делала результат разборчивым и достаточно громким для игр. Позже, когда Commodore выпустила обновлённую версию чипа — 8580, инженеры де-факто исправили эту недоработку: новое постоянное напряжение формировалось через делитель и получалось чуть ниже, около 4,75 вольта. Разница выглядит незначительной, но она заметно ослабляла эффект — на 8580 тот же самый трюк с $D418 звучал тише и хуже, а иногда требовал от программистов дополнительных ухищрений, чтобы речь вообще стала разборчивой.
Как случайная лазейка превратилась в культовую технологию
Первыми, кто вывел этот приём на публику, стали разработчики двух игр 1984 года — Ghostbusters от Activision и Impossible Mission от Epyx. Обе включали оцифрованную речь персонажей, и обе вышли в тот самый год, когда для домашнего компьютера без поддержки PCM это казалось невозможным трюком.
При этом чистый баг регистра $D418 — это только половина истории. Речь в этих играх дополнительно обрабатывала технология компании Electronic Speech Systems, основанной инженером Форрестом Мозером. Их программное сжатие позволяло уместить произнесённые фразы в крайне скромный объём памяти Commodore 64. Получается двухслойная инженерия: аппаратный баг открыл саму физическую возможность вывести оцифрованный звук через чип, никогда не предназначенный для этого, а программная обработка сделала результат компактным и разборчивым для конечного игрока.
Дальше эта техника не осталась историческим курьёзом — она превратилась в настоящую культурную традицию. Демосценеры и композиторы чиптюн-музыки продолжают использовать приём с $D418 десятилетия после выхода Commodore 64, постепенно выжимая из него всё больше качества — от простых нескольких килогерц с четырёхбитным разрешением до куда более амбициозных экспериментов с честным семибитным звуком на частотах около 16 килогерц с использованием широтно-импульсной модуляции. Современные эмуляторы и программные плееры до сих пор аккуратно воспроизводят именно эту особенность оригинального чипа 6581 — потому что без неё половина легендарных звуковых эффектов золотой эры C64 просто не заиграла бы так, как её запомнили миллионы игроков.
Источник: commons.wikimedia.org





1 комментарий
Добавить комментарий