O que mudou de verdade no DS4Windows 3.9.9
Toda versão nova de um programa popular gera listas de “novidades” que são copiadas de site em site até virarem verdade por repetição. Com o DS4Windows 3.9.9 aconteceu exatamente isso: durante meses circularam listas com quatro, cinco mudanças atribuídas a esta versão — correções de debounce, reconstrução de zonas mortas, otimizações de desempenho com números precisos. Para escrever esta página, fizemos o que qualquer um pode fazer: abrimos as notas oficiais do lançamento no repositório do fork schmaldeo, no GitHub, e conferimos o código alterado entre uma versão e outra. A resposta é curta, verificável e bem diferente do que circulou por aí.
A nota oficial completa: uma única linha
O texto integral das notas de lançamento da v3.9.9, publicada em 6 de janeiro de 2025, é este: “Add ability to invert rumble motors (this time correctly :)” — em português: “Adicionada a capacidade de inverter os motores de rumble (desta vez corretamente :)”. Depois dessa linha, a nota traz apenas o link automático de “Full Changelog”, que compara as tags v3.9.7 e v3.9.9. Não existe uma lista escondida em outro lugar: é isso, e só isso.
O comparativo de código confirma a nota. Entre a v3.9.7 e a v3.9.9 há apenas dois commits: “Add ability to inverse rumble motors”, de 2 de dezembro de 2024, e “Fix inverse rumble motors”, de 6 de janeiro de 2025 — o dia do lançamento. São 13 arquivos alterados, todos relacionados ao rumble e à interface dos perfis do programa. Não há nenhuma alteração em drivers, rede, leitura de controles ou desempenho nesse intervalo. Um detalhe que ajuda a entender a confusão: nem sequer existe uma release v3.9.8 — há uma tag com esse número, mas nenhum lançamento publicado, e o changelog oficial salta da v3.9.7 direto para a v3.9.9.
O que significa inverter os motores de rumble
Os controles DualShock 4 e DualSense têm dois motores de vibração diferentes: um maior e mais pesado, responsável pela vibração forte e grave, e um menor, responsável pela vibração leve e aguda. Os jogos enviam valores separados para cada motor — uma explosão distante pode pedir vibração forte no motor grande e nada no pequeno, enquanto um menu pode pedir só um toque leve. A função que a v3.9.9 adicionou permite trocar os papéis dos dois motores: o que o jogo pediu como vibração forte passa a sair pelo motor leve, e vice-versa, de forma configurável no perfil do controle.
Para que isso serve na prática? Alguns jogos — principalmente ports antigos e títulos que tratam os dois motores de forma invertida em relação ao padrão do Xbox 360 — produzem uma vibração que parece “errada”: fraca onde deveria ser forte. Inverter os motores corrige esse comportamento sem precisar mexer no jogo. Também é uma questão de preferência pessoal e de acessibilidade: há quem prefira respostas mais suaves. O “desta vez corretamente” da nota oficial indica que já existia uma tentativa anterior dessa função com comportamento incorreto, e que foi a correção dela que motivou esta versão. É uma mudança pequena e honesta — exatamente o oposto das listas grandiosas que circularam.
O que NÃO mudou na 3.9.9: os mitos que circularam
Para que não reste dúvida, estes são os itens mais repetidos nas listas de “novidades da 3.9.9” e a situação real de cada um:
- “Novo algoritmo antidebouncing contra cliques duplos” — o debouncing de switches existe no fork schmaldeo desde o início dele, como característica geral do projeto (está no README do fork). Não é uma novidade da 3.9.9: o comparativo de código desta versão não contém nenhuma alteração sobre debounce.
- “Correção estrutural do stick drift e reconstrução das zonas mortas” — o fork oferece, desde as suas primeiras versões, uma ferramenta que ajuda a mitigar o drift de analógicos. Não houve nenhuma “reconstrução” anunciada ou presente no código da 3.9.9.
- “Otimizações de I/O em Win32, vazamento de memória corrigido, CPU abaixo de 1% e polling acima de 250 Hz” — nenhum desses itens aparece nas notas oficiais nem no diff entre as versões, e os números não têm nenhuma fonte primária. São afirmações fabricadas.
- “Migração para .NET 8 nesta versão” — a linha DS4Windows já exigia o .NET 8 Desktop Runtime desde a era Ryochan7 (a v3.3.3 já era compilada para .NET 8). É um requisito antigo do programa, não uma migração da 3.9.9.
Transparência: este site também publicou a lista errada
Esta página existe também como uma correção pública. Versões anteriores da nossa própria página de download reproduziam uma lista de mudanças da 3.9.9 montada a partir de fontes secundárias, sem conferência com as notas oficiais — e ela estava errada nos mesmos pontos listados acima. Na revisão de outubro de 2026, voltamos à fonte primária (as notas e o comparativo de código no GitHub), removemos todos os itens sem respaldo e substituímos a seção pela nota real, de uma linha só. Os hashes SHA-256 publicados aqui foram, na mesma revisão, recalculados a partir dos pacotes originais baixados das fontes oficiais — os quatro conferem. Se você leu a lista antiga, aqui ou em qualquer outro site, desconsidere: a 3.9.9 mudou uma coisa só.
Você não precisa confiar na nossa palavra: a página de releases do fork schmaldeo no GitHub é pública, a nota da 3.9.9 tem uma linha e o comparativo entre v3.9.7 e v3.9.9 mostra os dois commits. Nossa página de download reúne os links oficiais e os hashes para quem quiser conferir os arquivos por conta própria.
Então o que o fork schmaldeo adicionou ao longo do tempo?
A confusão tem uma origem compreensível: quase tudo o que foi atribuído à 3.9.9 existe de verdade no programa — só que não nasceu nesta versão. São características acumuladas do fork ao longo da sua série de lançamentos posteriores à v3.3.3 original, isto é, evolução do fork, e não “novidades da 3.9.9”:
- Debouncing de switches — tratamento para botões desgastados que passam a registrar dois acionamentos num clique só, um dos problemas clássicos de controles com anos de uso. É um dos recursos que o próprio README do fork destaca como diferencial dele.
- Ferramenta de ajuda contra stick drift — recurso para mitigar, via software, a deriva de analógicos gasto. Não conserta o hardware, mas pode prolongar a vida útil de um controle que começou a “puxar” sozinho.
- Correções e manutenção acumuladas — a série de versões do fork manteve o programa funcionando e corrigiu problemas herdados da base original, mantendo os mesmos requisitos e o mesmo formato de perfis.
A forma certa de resumir é: quem usa a 3.9.9 tem acesso a tudo isso — mas graças ao fork inteiro, não a esta versão específica. Se você ainda está na v3.3.3 original, o ganho de atualizar é o conjunto dessa evolução acumulada, e não uma lista de recursos novos de janeiro de 2025. Nosso guia de atualização da 3.3.3 para a 3.9.9 explica o processo com segurança, incluindo backup dos perfis.
Resumo honesto
A DS4Windows 3.9.9 é a versão final da linha clássica e continua sendo a que recomendamos para a maioria dos usuários — não por ter uma lista longa de novidades, mas por ser o ponto mais maduro de um fork bem mantido. A única mudança dela em relação à 3.9.7 é a inversão dos motores de rumble, agora funcionando corretamente. Todo o resto que você ler por aí sobre “o que mudou na 3.9.9” é evolução anterior do fork ou invenção. Para situar esta versão na história completa do programa, veja a nossa página de versões e a história do fork schmaldeo.
