Наверное практически всем известно, что с выходом Windows Vista ещё в 2007 году, а в след за ней и во всех последующих версиях Windows звуковой API DirectSound3D был удален из Windows, вместо DirectSound и DirectSound3D стали использоваться новые API XAudio2 и X3DAudio. Вследствие чего в старых играх стали недоступны звуковые спецэффекты ЕАХ(звуковые эффекты окружающей среды). В этой статье я расскажу, как вернуть тот самый DirectSound3D/EAX во все старые игры, которые поддерживают данные технологии играя на Windows 7/8/10. Конечно, опытные геймеры всё это знают, но возможно кому-то статья будет полезна.
Старые игры не ушли на свалку истории, наоборот они пользуются огромным спросом, как у пользователей старшего поколения, так и у младшего. Старые игры лучше смотрятся на современных мониторах с высоким разрешением, для многих игр выходят моды улучшающие текстуры и шейдеры, но вот со звуком поначалу не повезло. С выходом следующего поколения Windows Vista, вслед за Windows ХР, разработчики Microsoft сочли, что DirectSound3D морально устарел — он имел ограничение в 6-канальный звук, не поддерживал сжатие звука, был процессорно зависимым и поэтому ему пришел на смену XAudio2/X3DAudio. А так как технология ЕАХ компании Creative была не самостоятельным API, как был в своё время A3D от компании Aureal, а всего лишь расширением DirectSound3D — звуковые карты компании Creative оказались за бортом. Если не использовать специальные программные врапперы, то играя на Windows 7/8/10 в старых играх пункты меню включающие EAX будут не активны. А без EAX звук в играх будет не таким сочным, объемным, позиционируемым.
Для решения этой проблемы компания Creative разработала программу-враппер ALchemy, которая перенаправляет вызовы DirectSound3D и EAX в кроссплатформенный API OpenAL. Но эта программа работает официально со звуковыми картами компании Creative и то не совсеми моделями. Например, современная карта Audigy Rx имеющая аппаратный DSP-процессор СА10300 официально не работает. Для владельцев других звуковых карт, например встроенной Realtek, нужно использовать ещё программный-драйвер Creative Sound Blaster X-Fi MB, который стоит денег. Можно ещё попробовать родную программу 3DSoundBack, но она не была закончена компанией Realtek — остановилась на стадии beta версии, работает не качественно и не со всеми чипами. Но есть способ лучше, он проще в использовании и бесплатен.
Первый способ.
Начну со звуковых карт компании ASUS. Звуковые карты компании ASUS DGX/DSX/DX/D1/Phoebus базируются на чипах C-Media и даже чипы ASUS AV66/AV100/AV200 — это всё те же перемаркированные чипы C-Media. В характеристиках этих звуковых карт написано, что они поддерживают ЕАХ 1/2/5. Все эти чипы получили в наследство от своего предшественника CMI8738 DSP-блок программно-аппаратный EAX 1/2, EAX 5 уже программный.
Владельцам карт серии Xonar очень повезло, все видели кнопку GX на панели драйвера, но возможно не все знают, что она делает. Покажу на скриншотах из программы AIDA64, вот так выглядит закладка DirectX-звук при не активной кнопке и у владельцев встроенных звуковых карт Realtek в Windows 7/8/10:
Все звуковые буферы равны нулю, все API не активны. А вот сразу после включения кнопки GX мы видим
Т.е. очень удобно — не нужно запускать дополнительные программы, как Creative ALchemy и копировать в каждую папку с игрой файл dsound.dll. Вот возникает большой вопрос, почему так не сделала компания Creative в своих драйверах? Более того, она во всех новых моделях Sound Blaster Z/Zx/AE не использует аппаратный DSP-процессор для обработки ЕАХ, а делает это программно через драйвер по упрощенным алгоритмам. Некоторые люди считают, что программной обработки звука достаточно, потому что современные ЦП намного мощней процессоров звуковых карт 10-летней давности, которые аппаратно обрабатывали звук. Это совсем не так. ЦП оптимизирован обрабатывать х86-команды, а DSP гораздо быстрей обрабатывает звук центрального процессора, как и видеокарта быстрей производит растеризацию, чем ЦП. Центрального процессора хватит для не сложных алгоритмов, а вот качественная реверберация с множеством источников звука будет отнимать слишком много ресурсов даже мощного ЦП, что скажется на падении ФПС в играх. Это уже признала компания Microsoft и уже вернула поддержку обработки звука DSP-процессорами в Windows 8, а также компания Sony, которая добавила в свою приставку PS5 отдельный чип для обработки 3D-звука.
Второй способ.
Этот вариант подойдет для пользователей встроенной звуковой карты в материнскую плату, которых большинство. Есть такой проект DSOAL — это программная эмуляция DirectSound3D и ЕАХ с помощью OpenAL(OpenAL должен быть обязательно установлен в системе) не требующая аппаратного ускорения. Если ваш звуковой чип имеет какие-то аппаратные функции для обработки звука то они будут использоваться автоматически. Программа настолько хорошо работает, что через неё ЕАХ заработал у меня на всех старых играх, где есть галочка ЕАХ в настройках. Вот так выглядит окно AIDA64, если скопировать файлы DSOAL в папку программы:
Если же этого не произошло и у вас картинка, как на самом первом скриншоте, значит родной Windows dsound.dll не даёт перехватить API, как это было и в моём случае. Тогда поможет такой метод — нужно будет загрузиться с какого-нибудь Windows Live-CD образа и удалить файл dsound.dll не без помощи утилиты Unlocker (предварительно сделав копию на случай отката) из каталога С:\Windows\SysWOW64 и записать вместо него те самые dsoal-aldrv.dll и dsound.dll. Я так сделал и у меня, как сама Windows, так и все игры работали без сбоев и так даже удобней — не нужно каждый раз копировать эти файлы в папки с играми, в крайнем случае, можно будет вернуть обратно родной dsound.dll на место. Правда такой способ подойдет, если вы не будете пользоваться другими звуковыми картами ASUS или Creative, потому что в этом случае у вас всегда DirectSound3D будет работать только через DSOAL, а не через родной драйвер или ALchemy.
Послушать DSOAL можно в этом видео:
Скачать готовую библиотеку последней версии можно отсюда.
Сравнивая как звучит ЕАХ на разных звуковых картах я с удивлением обнаружил, что на встроенном Realtek ЕАХ звучит лучше, чем на Асусах или на моей Audigy Rx. Если почитать даташиты, то практически все чипы Realtek поддерживают DirectSound3D/ЕАХ 1&2. Запустив AIDA64 из под Windows XP можно увидеть:
Оказывается, Реалтеки в отличии от ASUS и Creative звуковых карт поддерживают ещё какой-то I3DL2 (не в каждом Реалтековском даташите об этом написано). I3DL2(Interactive 3D Audio Level 2) — это открытый промышленный стандарт для работы с 3D интерактивным звуком, это расширение для DirectSound3D для работы с реверберацией и окклюзией. В принципе аналог ЕАХ, но звучит приятней — более приятная реверберация в играх шагов, когда персонаж бежит по пещере или замку, более реалистичное звучание объемного звука в помещениях. Поэтому если старая игра работает на Windows XP то я играю только на ХР, вдруг звуковой движок сможет задействовать I3DL2. DSOAL хоть и открытый проект и его любой может усовершенствовать, но он никогда не сможет задействовать I3DL2, т.к. OpenAL не работает с I3DL2, а только с ЕАХ 1-5. Но есть и хорошая новость — начиная с Windows 8 I3DL2 включен в библиотеку XAudio 2.7. Так что звук в новых играх под Windows 10 будет лучше, чем под Windows 7.
Ну и напоследок хочу напомнить, что все эти технологии 3D-звука разрабатывались для наушников, на 2х колонках вы практически 3D-звука не услышите. Чтобы насладиться детальным звуком наушники уровня SVEN AP860 не подойдут, из недорогих наушников нужно начинать с Axelvox HD 241 — уже будет разница со SVEN AP860, как небо и земля. Вот как-то так ориентируйтесь.