Quando Quake chegou às lojas em 1996, ele não chamou atenção só pelos gráficos totalmente 3D. O jogo também ofereceu partidas via TCP/IP, algo raro fora das LANs naquele momento.
O mais curioso, porém, era invisível para o público: o executável único do Quake rodava tanto no velho DOS quanto no recém-chegado Windows 95. Dois sistemas com modelos de memória distintos falavam a mesma língua graças a uma engenharia ousada.
Como o executável único do Quake burlou as limitações do DOS
A id Software queria alcançar jogadores que ainda dependiam do DOS sem ignorar quem já usava o Windows 95. Para evitar versões diferentes, o estúdio adotou o compilador open source djgpp, que embutia o cliente DPMI go32 no próprio binário.
Essa escolha permitiu que o executável único do Quake conversasse tanto com o CWSDPMI, popular no DOS, quanto com a implementação DPMI interna do Windows. O resultado? Memória protegida, multitarefa e acesso a periféricos além dos 640 KB clássicos, tudo dentro do mesmo arquivo.
Raymond Chen, engenheiro da Microsoft, comentou na época que ver um programa usar um extensor DPMI diferente daquele para o qual foi escrito era “surpreendente”. A façanha mostrou que o código podia enganar o próprio sistema, explorando características pouco documentadas do Windows 95.
Parceria com a Mpath levou o TCP/IP do Windows para dentro do jogo
Mesmo com o DPMI resolvido, faltava a parte mais importante: rede moderna no DOS. O Windows 95 oferecia Winsock nativamente, mas o DOS não possuía nada equivalente. A solução veio da Mpath Interactive, criadora do serviço Mplayer.
Imagem: Divulgação
Genvxd: a ponte mágica entre BSD sockets e Winsock
O pacote da Mpath incluía o VxD GENVXD.VXD, a DLL genvxd.dll e o Chunnel. Esses componentes interceptavam as chamadas BSD sockets geradas pelo jogo e as traduziam para Winsock, permitindo que o Quake em “modo DOS” falasse com a pilha TCP/IP do Windows.
Assim, bastava estar dentro de uma sessão Windows 95 para que o executável único do Quake abrisse servidores remotos, listasse partidas no Gizmo e mantivesse latência razoável, algo impensável no DOS puro sem hardware adicional caríssimo.
A integração também garantiu que apenas quatro arquivos fossem essenciais para iniciar o jogo localmente: quake.exe, config.cfg, pak0.pak e cwsdpmi.exe. Todo o restante servia à compatibilidade de rede ou ao matchmaking, revelando um ecossistema de hacks que, até hoje, encanta quem estuda retro-computação.
Ao unir compiladores, extensores de memória e drivers virtuais, John Carmack e equipe mostraram que criatividade vence limitações. Não à toa, o caso é referência frequente aqui na OrdemGeek quando o assunto é compatibilidade entre plataformas.
Acesse diariamente nossas dicas sobre animes e games para não perder nada. Siga também o OrdemGeek no Facebook!
