Provavelmente, quase todos sabem que, com o lançamento do Windows Vista em 2007, e subsequentemente em todas as versões posteriores do Windows, a API de som DirectSound3D foi removida do Windows. Em vez de DirectSound e DirectSound3D, novas APIs, como XAudio2 e X3DAudio, começaram a ser usadas. Como resultado, os efeitos sonoros EAX (efeitos sonoros ambientais) se tornaram inacessíveis em jogos mais antigos. Neste artigo, vou explicar como trazer de volta o DirectSound3D/EAX para todos os jogos antigos que suportam essas tecnologias ao jogar no Windows 7/8/10. Claro, os gamers experientes já sabem disso, mas talvez este artigo seja útil para alguém.
Os jogos antigos não foram para o lixão da história, pelo contrário, eles são extremamente populares tanto entre os usuários mais velhos quanto entre os mais jovens. Jogos antigos têm uma aparência melhor em monitores modernos com alta resolução, e para muitos jogos, mods que melhoram texturas e shaders estão sendo lançados, mas quanto ao som, inicialmente houve dificuldades. Com o lançamento da próxima geração, o Windows Vista, após o Windows XP, os desenvolvedores da Microsoft decidiram que o DirectSound3D estava moralmente ultrapassado — ele tinha a limitação de som de 6 canais, não suportava compressão de áudio e era dependente do processador, portanto, foi substituído pelo XAudio2/X3DAudio. Além disso, como a tecnologia EAX da Creative não era uma API autônoma como foi, na época, o A3D da Aureal, mas apenas uma extensão do DirectSound3D, as placas de som da Creative ficaram de fora. Se não forem utilizados wrappers de software especiais, ao jogar no Windows 7/8/10 em jogos antigos, os itens de menu que incluem EAX estarão desativados. E sem EAX, o som nos jogos não será tão rico, envolvente e posicionado.
Para resolver esse problema, a empresa Creative desenvolveu o programa-wrapper ALchemy, que redireciona chamadas do DirectSound3D e EAX para a API multiplataforma OpenAL. No entanto, este programa funciona oficialmente apenas com placas de som da Creative e nem todos os modelos. Por exemplo, a moderna placa Audigy Rx, que possui um processador DSP hardware CA10300, não funciona oficialmente. Para os proprietários de outras placas de som, como a integrada Realtek, é necessário usar o driver de software Creative Sound Blaster X-Fi MB, que tem um custo. Também é possível tentar o programa nativo 3DSoundBack, mas ele não foi finalizado pela Realtek — parou na fase beta, funciona de forma insatisfatória e nem com todos os chips. Mas existe uma opção melhor, que é mais fácil de usar e gratuita.
A primeira maneira
Começarei com as placas de som da ASUS. As placas de som DGX/DSX/DX/D1/Phoebus da ASUS são baseadas em chips da C-Media e até os chips AV66/AV100/AV200 da ASUS — são os mesmos chips da C-Media reembalados. Nas especificações dessas placas de som, está indicado que elas suportam EAX 1/2/5. Todos esses chips herdaram de seu predecessor, o CMI8738, o bloco DSP de EAX 1/2, enquanto o EAX 5 é software.
Os proprietários das placas da série Xonar têm muita sorte, todos viram o botão GX no painel do driver, mas pode ser que nem todos saibam o que ele faz. Mostrarei em capturas de tela do programa AIDA64, assim é como a aba de som do DirectX aparece com o botão inativo e para proprietários de placas de som Realtek integradas no Windows 7/8/10:

Todos os buffers de som são iguais a zero, todas as APIs estão inativas. E logo após ativar o botão GX, vemos

Ou seja, é muito conveniente — não é necessário iniciar programas adicionais, como o Creative ALchemy, e copiar o arquivo dsound.dll em cada pasta do jogo. Surge uma grande questão: por que a empresa Creative não fez isso em seus drivers? Além disso, em todos os novos modelos Sound Blaster Z/Zx/AE, não utiliza o processador DSP de hardware para processamento EAX, mas faz isso via software através do driver usando algoritmos simplificados. Algumas pessoas acreditam que o processamento de som via software é suficiente, uma vez que os processadores modernos são muito mais potentes do que os processadores de placas de som de 10 anos atrás, que processavam o som de forma hardware. Isso não é verdade. O CPU é otimizado para processar comandos x86, enquanto um DSP processa o som muito mais rapidamente que o processador central, assim como uma placa gráfica realiza a rasterização mais rapidamente que o CPU. O processador central é suficiente para algoritmos simples, mas uma reverb de qualidade com várias fontes de som demandará muitos recursos, mesmo de um CPU potente, o que resultará em uma queda de FPS nos jogos. A Microsoft já reconheceu isso e restaurou o suporte para processamento de som via processadores DSP no Windows 8, assim como a Sony, que adicionou um chip dedicado para processamento de som 3D em seu console PS5.
Segunda maneira
Essa opção é adequada para usuários da placa de som integrada na placa-mãe, que são a maioria. Existe um projeto chamado — uma emulação software do DirectSound3D e EAX usando OpenAL (OpenAL deve ser obrigatoriamente instalado no sistema) que não requer aceleração de hardware. Se seu chip de som possui alguma funcionalidade de hardware para processamento de som, ela será utilizada automaticamente. O programa funciona tão bem que, através dele, o EAX funcionou em todos os meus jogos antigos que possuem a opção EAX nas configurações. Veja como fica a janela do AIDA64, caso você copie os arquivos DSOAL na pasta do programa:

Se isso não aconteceu e a sua tela está como no primeiro screenshot, então o Windows dsound.dll não permite interceptar a API, como ocorreu no meu caso. Então, ajudará este método — você precisará inicializar a partir de alguma imagem do Windows Live-CD e remover o arquivo dsound.dll com a ajuda da ferramenta Unlocker (fazendo uma cópia previamente, caso precise reverter) do diretório C:\Windows\SysWOW64 e substituir pelo tal dsoal-aldrv.dll e dsound.dllEu fiz isso e tanto o Windows quanto todos os jogos funcionaram sem falhas, além de ser mais conveniente — não preciso copiar esses arquivos para as pastas dos jogos toda vez, se necessário, posso voltar ao original. dsound.dll Na verdade, esse método é adequado se você não usar outras placas de som da ASUS ou Creative, pois nesse caso o DirectSound3D funcionará sempre apenas via DSOAL, e não pelo driver padrão ou ALchemy.
Você pode ouvir o DSOAL neste vídeo:

→ Baixar
Comparando como o EAX soa em diferentes placas de som, fiquei surpreso ao descobrir que no Realtek integrado o EAX soa melhor do que nas ASUS ou na minha Audigy Rx. Se você ler as fichas técnicas, praticamente todos os chips da Realtek suportam DirectSound3D/EAX 1&2. Ao executar o AIDA64 sob o Windows XP, pode-se observar:

Descobri que os Realteks, ao contrário das placas de som da ASUS e da Creative, suportam algum I3DL2 (não está escrito em todas as fichas técnicas da Realtek). I3DL2 (Interactive 3D Audio Level 2) é um padrão industrial aberto para trabalhar com áudio 3D interativo, uma extensão para DirectSound3D para lidar com reverb e oclusão. Basicamente, é um análogo do EAX, mas soa mais agradável — uma reverb mais gostosa nos passos em jogos, quando o personagem corre por uma caverna ou castelo, um som tridimensional mais realista em ambientes. Por isso, se um jogo antigo funciona no Windows XP, eu jogo apenas no XP, talvez o motor de som consiga ativar o I3DL2. O DSOAL, embora seja um projeto aberto e qualquer um possa aprimorá-lo, nunca conseguirá ativar o I3DL2, já que o OpenAL não trabalha com I3DL2, apenas com EAX 1-5. Mas há uma boa nova — a partir do Windows 8, o I3DL2 está incluído na Portanto, o som em novos jogos no Windows 10 será melhor do que no Windows 7.
E por último, quero lembrar que todas essas tecnologias de som 3D foram desenvolvidas para fones de ouvido, em duas caixas de som você quase não ouvirá o som 3D. Para apreciar um som detalhado, fones de ouvido de nível SVEN AP860 não são adequados, entre os fones de ouvido mais baratos, você deve começar com Axelvox HD 241 — já haverá uma diferença com SVEN AP860, como céu e terra. É mais ou menos assim que você deve se guiar.
Fonte: habr.com
