Введение

reSID — это программная эмуляция чипа MOS6581 SID (Sound Interface Device), разработанная Дагом Лемом. Этот чип использовался в компьютере Commodore 64. reSID является свободным программным обеспечением, распространяемым под лицензией GNU General Public License. reSID — это библиотека C++ с полной эмуляцией чипа SID. Эту библиотеку можно подключать к программам, эмулирующим MPU MOS6510, для воспроизведения музыки, созданной для компьютера Commodore 64. reSID была подключена к VICE (эмулятор Commodore 64), SIDPLAY (проигрыватель мелодий SID), а также к трекерам GoatTracker и cheesecutter. Эмуляторный движок работает на основе циклов, эмулируя внутренние операции чипа SID. Аудиофильтр SID моделируется как фактический двух интеграторный контур биквадратичный фильтр. Движок был разработан на основе доступной информации о SID, выборок регистров OSC3 и ENV3, теории фильтров и тестирования. Существует два основных варианта чипа SID: 6581 и 8580. Они реализуют один и тот же программный интерфейс (API), но их аналоговые части ведут себя по-разному. Различия заключаются главным образом в: качестве ЦАП, комбинированных формах волн, смещениях напряжения внутри чипа и фильтре. Из-за инженерных решений фильтр семейства чипов 6581 был значительно нелинейным. Моделирование эффекта показывает, что искажение тесно связано с амплитудой звука на выходе фильтра высоких и средних частот и возникает только на полуволне выходного сигнала. Эффективная центральная частота фильтра, как можно заметить, смещается в спектре при увеличении амплитуды входного сигнала, и считается, что этот эффект является побочным следствием экспоненциальной характеристики инверторов NMOS, которые выполняют роль операционных усилителей в чипе 6581. Кроме того, искажение стабилизируется инвертированной фазой полосового выхода, что позволяет некоторому искажению возникать во время обеих полуволн входного сигнала. В отличие от этого, фильтр чипа 8580 был переработан и, по-видимому, работает идеально. Линейные фильтры reSID даже не пытаются эмулировать нелинейные характеристики эмуляции 6581, а некоторые функции, такие как настройка OptimiseLevel, еще больше ухудшают качество фильтра, ограничивая верхнюю частоту фильтра всего лишь до 4 кГц (оригинальные чипы могут задавать центральные частоты до 20 кГц для 6581 и до 12 кГц для 8580). Была проделана работа по добавлению симуляции искажений 6581 в движок, которая началась в 2007 году в виде патча, поддерживаемого Антти С. Ланкила, и привела к созданию форка reSIDfp, включенного в качестве основного эмуляторного движка в libsidplayfp. Последняя официальная версия — 0.16, выпущенная 11 июня 2004 года, в то время как предварительный релиз reSID 1.0 был включен в VICE в 2010–2011 годах и с тех пор был доработан другими разработчиками. Предварительный релиз предоставляет точные модели немонотонных цифро-аналоговых преобразователей и фильтра для модели 6581, где DAQ использовался для измерения напряжения на конденсаторных выводах SID с целью получения передаточной функции операционного усилителя. Он также включает в себя ряд улучшений эмуляции на уровне циклов цифровых компонентов, в частности генераторов формы волны и огибающей, основанных на векторизованных фотографиях кристаллов. Позже была предпринята первая попытка правильно смоделировать фильтр 8580 и эмулировать небольшое искажение, которое проявляется в некоторых экстремальных условиях. В 2022 году Даг Лем вернулся к разработке в новом репозитории, размещенном на GitHub, который должен стать официальным источником эмулятора reSID MOS6581 / MOS8580 SID.