Como rodar jogos antigos no navegador hoje em dia
Você já deve ter tentado abrir um jogo antigo pelo navegador e enfrentado lag, sons que não carregam ou telas brancas. A coisa funciona, mas depende de onde você está rodando e do que está usando.
O que é browser de jogos antigos na prática
É basicamente um emulador que roda via JavaScript e WebAssembly diretamente no navegador. Sites como o Internet Archive abrigam milhares de títulos que funcionam assim. Também existem projetos open-source como EmulatorJS, que você pode rodar no seu próprio servidor ou usar embeds prontos. A ideia central é transformar ROMs e BIOS em algo que um interpretador JavaScript consiga executar em tempo real sem precisar baixar nada. Isso não substitui um emulador nativo. Você perde performance em CPU mais fraca e o setup de input costuma ser limitado. Mas para jogar Super Mario, Zelda ou Sonic direto na aba do navegador, funciona bem na maioria das máquinas modernas.
Por onde começar
A opção mais direta é o Internet Archive Software Library. Lá você tem jogos de DOS, Nintendo, Sega e outros consoles. Basta clicar no botão "Play" e o site carrega o emulador automaticamente. Não precisa de conta. O problema é que o arquivo precisa estar disponível no Archive, o que limita os títulos. Se você quer mais controle, o caminho é o EmulatorJS. Você baixa o pacote, coloca os arquivos da ROM e da BIOS no diretório correto e configura um arquivo HTML com o código de embed. Leva uns 10 minutos se você já tiver os arquivos necessários. A documentação deles está no site oficial do projeto.
Para quem não quer lidar com servidor próprio, há provedores de hospedagem que já oferecem a solução pronta, mas geralmente cobram mensalidade. Em casa, um VPS barato de 5 dólares por mês resolve se você quiser compartilhar com amigos.
Configuração prática do EmulatorJS
Baixe o pacote no GitHub do projeto. Extraia em uma pasta. Crie uma subpasta chamada roms e coloque seus arquivos ROM lá. Você também vai precisar dos arquivos BIOS correspondentes ao console — sem eles, alguns jogos simplesmente não iniciam. Por exemplo, para SNES você não precisa de BIOS, mas para PlayStation e Sega CD precisa sim. Crie um arquivo index.html na raiz com o embed. Um exemplo básico:
<div id="game"></div>
<script src="data/loader.js"></script>
<script>
EmulatorJS.setup({
id: "game",
system: "snes",
romUrl: "roms/mario3.sfc",
biosUrl: "bios/snes_boot.bin"
});
</script>
Abra o arquivo num navegador local ou suba num servidor. Os controles padrão são teclado: setas para mover, Z e X para botões A e B, Shift e Enter para start e select. Na maioria dos casos isso já basta para jogos 2D. Para títulos que precisam de analógico, como alguns jogos de PlayStation, a experiência fica comprometida. Dica prática: se o jogo não carregar, verifique primeiro se a URL da ROM está correta e se o arquivo não está corrompido. A maior parte dos problemas de "não abre" vem de ROM mal baixada, não de configuração errada.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Problema que encontrei na prática
Tinha um jogo de SNES que simplesmente travava na tela de boot. Verifiquei a ROM várias vezes, testei em emuladores nativos e funcionava perfeitamente. O problema era que o EmulatorJS tentava carregar uma core específica que tinha um bug de timing com aquele jogo em particular. A solução foi trocar o core para bsnes no parâmetro de configuração, assim: core: "bsnes". Funcionou imediatamente. Esse tipo de ajuste raramente está documentado nos tutoriais básicos.
Limitações e quando isso não funciona
O maior gargalo é CPU. Emuladores de console 16-bit ou inferior rodam razoavelmente bem em qualquer computador dos últimos 8 anos. Console 32-bit, como Saturn ou PlayStation, começa a sofrer em dispositivos mais lentos. N64 é aceitável em CPUs boas, mas com tela cheia e resolução dobrada o framerate cai. Já PS2 e Xbox são praticamente inviáveis via navegador — o overhead de tradução para WebAssembly ainda é grande demais. Outro ponto: áudio. A API WebAudio tem latência variável dependendo do navegador e do SO. No Chrome com Windows, costuma funcionar bem. No Firefox com Linux, já vi casos de áudio dessincronizado que atrapalham a jogabilidade. Se o som for essencial pro jogo, teste antes de depender disso.
Controle também é limitação real. Teclado funciona pra jogos simples. Gamepad via Bluetooth conecta, mas a resposta pode ter delay perceptível em comparação com um emulador desktop. Para jogos de luta ou ritmo, isso faz diferença. Alternativa quando o navegador não entrega: use emuladores nativos como RetroArch ou PCSX2. Eles rodam direto no sistema operacional, aproveitam aceleração por hardware de verdade e têm configuração de cheats, save states e shaders muito mais completa. Se o objetivo é apenas jogar e não tem restrição de plataforma, a experiência nativa é consistentemente melhor.
O que funciona melhor e o que não funciona
Funciona bem:
- Jogos de NES, SNES, GBA, Mega Drive/Genesis
- Jogos de DOS via DOSBox integrado
- Jogos portáteis como Game Boy, GBC, GBA
- Títulos que não dependem de áudio complexo
Problema ou inviável:
- PS2, Xbox, Dreamcast
- Jogos que exigem múltiplos botões simultâneos com resposta precisa
- Títulos que usam cópia de segurança ou proteção anti-pirataria (a maioria das ROMs não passa por isso, mas alguns jogos original exigem)
- Redes multiplayer reais — o emulador web não implementa isso
Dica avançada sobre cache e performance
Se você hospeda o próprio server, configure cache de longa duração para os arquivos .js e .wasm. O navegador baixa esses arquivos enormes toda vez se o cache estiver mal configurado. Colocar max-age=31536000 no header de Cache-Control reduz o tempo de carregamento inicial de cerca de 30 segundos para 5 segundos depois da primeira visita. Isso é algo que muita gente perde porque não pensa em infraestrutura antes de subir o conteúdo. Outro detalhe que ninguém fala: use compressão Brotli no servidor se disponível. Reduz o tamanho dos bundles em cerca de 15 a 20 por cento comparado ao gzip, e o time de download cai proporcionalmente. Em conexões móveis, a diferença é mais perceptível do que parece.
Para quem quer apenas testar rápido sem se complicar, comece pelo Internet Archive. Se precisar de algo mais customizado, monte um EmulatorJS local. Se o navegador não estiver entregando o que você precisa, migre para um emulador desktop nativo sem hesitação. Cada ferramenta tem seu lugar, e forçar algo pro navegador só pra tentar é perda de tempo.