PS2 Web Recomp: como rodar God of War 2 e jogos de PS2 no navegador, passo a passo
O guia do ps2-web-recomp: o que instalar, como converter o disco do seu God of War II ou Gran Turismo 4 e abrir o jogo no Chrome, no Windows e no Linux.

Desde que o Setup do Dev contou que um projeto roda God of War II e Gran Turismo 4 no navegador, a pergunta que mais aparece é como fazer isso em casa. O projeto se chama PS2 Web Recomp (o repositório é o ps2-web-recomp, no GitHub) e não tem página pronta para abrir: cada pessoa monta a sua, no próprio computador, a partir do disco de um jogo que tem.
Este guia mostra o caminho inteiro, do zero até o jogo aberto no Chrome: o que instalar, o comando que converte o disco, como abrir a página e como jogar, salvar e resolver os problemas mais comuns. Ele serve para quem usa Windows (pelo WSL 2, o Linux que roda dentro do Windows), Linux ou Mac com chip da Apple.
Antes de tudo, o que testamos e o que não testamos. Seguimos os passos num Windows 11 com o Ubuntu 26.04 no WSL 2: a instalação das ferramentas, o download do projeto, a preparação que o script faz na primeira vez e o servidor que abre a página no Chrome do Windows. A conversão de um jogo depende do disco, e não usamos nenhum aqui: os tempos e o comportamento dessa parte são os que o autor do projeto descreve no README.
O que é o PS2 Web Recomp, em poucas palavras
Um emulador comum lê as instruções do processador do PlayStation 2 enquanto o jogo roda e as traduz na hora, uma a uma. O PS2 Web Recomp faz essa tradução antes: uma ferramenta do projeto, o eerecomp, lê o executável do jogo e escreve código C++ equivalente. Esse C++ é compilado para WebAssembly, o formato que o navegador executa perto da velocidade de um programa nativo, e a imagem é desenhada pela placa de vídeo com WebGPU.

É por isso que o primeiro passo demora alguns minutos, e o jogo depois roda leve. Segundo o autor, God of War II chega a 60 quadros por segundo na resolução original do PS2, e Gran Turismo 4 roda a 50 (a versão europeia, que é a dele), num notebook com placa de vídeo integrada.
Dois jogos foram testados até agora: God of War II e Gran Turismo 4. Outros jogos podem parar no meio, numa função do sistema do PS2 que ainda não foi feita, e a parte dos problemas, no fim, mostra como reconhecer isso.
Antes de começar: o que você precisa
O disco do jogo, seu. O repositório não traz nada do jogo, e o autor deixa claro que é para usar a imagem de um disco que você tem. Mais abaixo mostramos como fazer a imagem a partir do disco. Não procure o jogo em site de download: além de ilegal, é o jeito mais fácil de baixar um arquivo com vírus.
Um navegador com WebGPU. O Chrome e o Edge têm no Windows e no Mac. No Linux, o Chrome precisa de dois ajustes, que explicamos adiante. Sem WebGPU, a página usa o desenho pelo processador, que serve para os menus e fica lento demais no jogo em 3D.
Espaço em disco. As ferramentas da primeira vez ocupam cerca de 1,8 GB (1,7 GB só do Emscripten), e cada jogo convertido ocupa mais uns 300 MB. A imagem do disco não é copiada: o projeto aponta para ela.
As ferramentas de programação. São gratuitas, e no Linux um comando instala todas:

- Git, para baixar o projeto do GitHub;
- Python 3, para ler o disco e servir a página no seu computador;
- CMake e Ninja, que organizam a compilação e a fazem rodar em paralelo;
- clang, o compilador de C++ (o projeto pede C++20 e escolhe o clang sozinho);
- 7-Zip e unzip, para abrir a imagem do disco em
.7ze o pacote de vídeo que o script baixa; - SDL2, que só é preciso para jogar numa janela, fora do navegador;
- Emscripten, o compilador que gera o WebAssembly. Esse você não instala: o próprio projeto baixa na primeira vez.
Passo 1: no Windows, instale o WSL 2
Os scripts do projeto são escritos para o terminal do Linux e foram testados no Linux e no Mac. No Windows, o caminho é o WSL 2, que roda um Ubuntu de verdade dentro do sistema, sem máquina virtual para configurar. Se você está no Linux, pule para o passo 2. No Mac, veja a nota no fim deste passo.
Abra o PowerShell como administrador (botão direito no menu Iniciar, “Terminal (Administrador)”) e rode:
wsl --installReinicie o computador quando ele pedir. Na volta, o Ubuntu abre sozinho e pede um nome de usuário e uma senha para o Linux. Anote a senha: o comando sudo, que aparece no passo 2, vai pedi-la.
Temos um guia só sobre isso, com o que fazer quando a instalação para no meio e onde guardar os arquivos para o Linux não ficar lento: WSL 2: como ter Linux dentro do Windows para programar. A instrução oficial da Microsoft está na documentação do WSL.
Daqui em diante, todos os comandos são digitados no terminal do Ubuntu (procure “Ubuntu” no menu Iniciar), e não no PowerShell.
No Mac com chip da Apple: o projeto também compila, mas o bash que vem com o macOS é antigo demais para os scripts. Com o Homebrew instalado, o comando é brew install bash cmake ninja sevenzip, e o resto do guia vale igual.
Passo 2: instale as ferramentas
No terminal do Ubuntu, atualize a lista de pacotes e instale tudo de uma vez:
sudo apt update
sudo apt install -y git python3 cmake ninja-build clang 7zip unzip libsdl2-devO sudo pede a senha do Linux que você criou no passo 1. Enquanto você digita, nada aparece na tela, e é normal. A instalação leva poucos minutos.
⚠️ O unzip não está na lista do README, mas faz falta. No nosso teste, o Ubuntu do WSL não veio com ele, e o script da primeira vez usa o unzip para abrir o pacote do wgpu-native, a biblioteca de vídeo que ele baixa. Sem ele, a preparação para nesse ponto. Por isso ele já está no comando acima.
Para conferir, peça a versão de cada um. Se todos responderem, está pronto:
git --version
cmake --version
ninja --version
clang --version
python3 --version
Passo 3: baixe o projeto
Clone o repositório na sua pasta do Linux e entre nela:
cd ~
git clone https://github.com/snuri00/ps2-web-recomp.git
cd ps2-web-recomp⚠️ No WSL, use a pasta do Linux (~), e não a do Windows. O Windows aparece dentro do Ubuntu em /mnt/c/, mas ler e gravar ali é bem mais lento para o Linux, e a conversão grava milhares de arquivos. Deixe o projeto em ~/ps2-web-recomp.

Passo 4: a imagem do seu disco
O projeto precisa do disco do jogo como um arquivo: uma imagem .iso, ou um .zip ou .7z com a .iso dentro. Os discos de PS2 são DVDs (alguns jogos antigos saíram em CD), e um leitor de DVD comum de computador lê os dois.
No Windows, um programa de gravar e copiar discos faz a imagem: no ImgBurn, por exemplo, é a opção “Create image file from disc”, e o resultado é um .iso. No Linux, com o disco no leitor, o próprio terminal copia:
dd if=/dev/sr0 of=~/god-of-war-2.iso bs=2048 status=progressSe a imagem foi feita no Windows, leve-a para a pasta do Linux. Dentro do Ubuntu, o disco C: é /mnt/c; troque SEU_USUARIO pelo seu usuário do Windows:
cp "/mnt/c/Users/SEU_USUARIO/Downloads/God of War II.iso" ~/god-of-war-2.isoQuanto à lei: o autor pede para usar só disco que você tem, e lembra que o C++ e o WebAssembly gerados são uma tradução do executável do jogo, e por isso pertencem aos donos dele. Gere e jogue no seu computador, e não publique o resultado.
Passo 5: converta o jogo com o port.sh
Este é o comando principal. Ele recebe um nome curto para o jogo (é só uma etiqueta, para as pastas) e o caminho da imagem:
scripts/port.sh gow2 ~/god-of-war-2.isoNa primeira vez, ele prepara as ferramentas antes do jogo. O script baixa o Emscripten na versão que o projeto usa (a versão 6.0.11), baixa o wgpu-native e compila as duas ferramentas de tradução do projeto, o eerecomp e o vurecomp. No nosso teste, essa preparação levou 47 segundos, com uma internet rápida (quase todo o tempo é o download de 1,7 GB do Emscripten; numa conexão mais lenta, conte alguns minutos), e acontece uma vez só. Ela termina com a linha == ready.

Depois vem o jogo, em seis etapas, que o script numera na tela:
[1/6] disc: lê o arquivoSYSTEM.CNFdo disco, que diz qual é o programa de início do jogo, e o extrai.[2/6] executable: separa o executável principal (no Gran Turismo 4 ele vem dentro de outro arquivo, e o script trata isso sozinho).[3/6] machine code to C++: oeerecomptraduz o código de máquina para C++.[4/6] exploring: o script roda o jogo escondido, sem janela, algumas vezes. A tradução de antes não enxerga toda função que o jogo chama por ponteiro, e cada rodada anota as que faltaram e traduz de novo, até uma rodada passar sem novidade. Nessas rodadas, ele aperta Start e depois ✕ a cada cinco segundos, o que passa pela tela de título da maioria dos jogos.[5/6] vector unit programs: compila de antemão os microprogramas que o jogo manda para as unidades vetoriais do PS2, onde mora boa parte do 3D.[6/6] builds: monta a página embuild/web-gow2e uma versão para jogar fora do navegador embuild/native-gow2.
Segundo o autor, God of War II vai da imagem à página em três minutos e meio num notebook de oito núcleos. No fim, o script mostra o comando para abrir a página. As imagens da última rodada de exploração ficam em games/gow2/shots, e são o jeito mais rápido de ver até onde um jogo novo chegou.

Passo 6: abra o jogo no navegador
Ainda na pasta do projeto, ligue o servidor que vem com ele, apontando para a página e para a imagem do disco:
python3 scripts/serve.py build/web-gow2 games/gow2/disc.isoDeixe esse terminal aberto e entre em http://localhost:8620/ no Chrome ou no Edge. No WSL, o navegador do próprio Windows abre esse endereço: testamos, e o Windows enxerga o servidor que roda dentro do Ubuntu sem nenhum ajuste.
Por que um servidor, e não abrir o arquivo direto? A página usa várias linhas de execução ao mesmo tempo, e o navegador só libera isso quando o servidor manda dois cabeçalhos de isolamento (Cross-Origin-Opener-Policy e Cross-Origin-Embedder-Policy). O serve.py manda os dois, e também entrega o disco em pedaços, conforme o jogo pede, em vez de o arquivo inteiro de uma vez. Os dois apareceram no nosso teste.
⚠️ Não deixe esse servidor aberto para a internet. Qualquer pessoa que alcance o endereço carrega o jogo, e o próprio README pede para manter só para você. No uso normal, em localhost, só o seu computador acessa.
Como jogar: teclado e controle

No teclado, Z é o ✕, X é a bola, A é o quadrado e S é o triângulo. Q e W são L1 e R1, as teclas 1 e 2 são L2 e R2, Enter é o Start e Backspace é o Select. As setas fazem o direcional, e I, J, K e L, o analógico esquerdo. A tecla F liga e desliga a tela cheia.
Controle também funciona, pelo suporte a controles do próprio navegador. Os gatilhos analógicos chegam ao jogo como os L2 e R2 sensíveis à pressão do DualShock 2, e o controle vibra quando o jogo pede, no Chrome e no Edge. No celular, aparecem botões na tela. Na página há ainda um seletor de resolução: a interna pode ser uma, duas ou três vezes a do PS2, e a página recarrega ao trocar.
Salvar o progresso
A página põe um cartão de memória no slot 1 e o guarda no próprio navegador, no endereço de onde você joga. O progresso sobrevive a recarregar a página, e o jogo formata e usa o cartão como faria com um de verdade.
Para não perder o save, use o botão Export card: ele baixa o cartão como um arquivo .ps2, no formato do PCSX2. O Import card faz o caminho de volta, o que permite levar o save para outro navegador ou trazer um que veio do PCSX2. Para começar com o slot vazio, abra o endereço com ?nocard no fim.
⚠️ Limpar os dados do navegador apaga o cartão. Exporte antes.
Jogar fora do navegador (opcional)
O passo 5 também monta um programa nativo, que abre o jogo numa janela, desenhando com Vulkan. No WSL, a janela abre pelo suporte a aplicativos gráficos do Windows 11. O comando exato, com o nome do executável do seu jogo, aparece no fim do port.sh. Tem esta forma:
build/native-gow2/ps2run games/gow2/disc/SLUS_XXX.XX --disc games/gow2/disc.iso --window --memcard gow2.ps2--fullscreen abre em tela cheia (F11 alterna), e PS2_SCALE=2 ou 3 antes do comando aumenta a resolução interna. O cartão de memória desse programa usa o mesmo formato do exportado pela página, então o save passa de um para o outro.
Quando algo dá errado
A página diz que não achou placa de vídeo compatível. No Linux, o WebGPU vem desligado no Chrome. Abra chrome://flags/#enable-unsafe-webgpu e chrome://flags/#enable-vulkan, ative os dois e reinicie o navegador. No Windows, use o Chrome ou o Edge atualizados, rodando no próprio Windows.
Notebook com duas placas de vídeo e a tela fica preta. Às vezes o desenho feito na placa dedicada não chega à tela. A página tenta as duas placas e, se precisar, copia cada quadro por outro caminho, mais lento. Vale testar também forçando o Chrome a usar uma só placa nas configurações de vídeo do Windows.
A preparação parou reclamando que não achou o unzip. Falta o unzip (passo 2). Instale com sudo apt install unzip e rode o port.sh de novo.
O download do Emscripten parece parado. No nosso teste, o primeiro git clone do Emscripten travou no começo, sem erro nenhum, e a segunda tentativa passou direto. Se a tela ficar parada em Cloning into '.../tools/emsdk' por vários minutos, interrompa com Ctrl+C, apague a pasta pela metade com rm -rf tools/emsdk e rode o mesmo comando de novo.
Outro jogo parou com [sys] unhandled syscall ou [iop] missing. É o limite do projeto hoje: o jogo pediu uma função do sistema do PS2 que ainda não foi feita. Não há o que ajustar do seu lado. Olhe as imagens em games/NOME/shots para ver até onde ele chegou, e acompanhe o repositório, que muda quase todo dia.
Ficou tudo muito lento. Confira se o projeto está na pasta do Linux (~), e não em /mnt/c, e se o navegador está usando WebGPU, e não o desenho pelo processador.
Quero refazer só a página. Depois de atualizar o projeto com git pull, o comando scripts/build_web.sh gow2 monta de novo só a página, sem repetir a conversão inteira.
O que dá para esperar
Na análise do Setup do Dev, o PS2 Web Recomp é mais interessante pelo método do que como jeito de jogar: o PCSX2 continua sendo o caminho para jogar a biblioteca do PS2 no computador. O que o projeto mostra é que traduzir o jogo de antemão, em vez de interpretá-lo, leva um título pesado como God of War II para uma aba do navegador numa placa de vídeo integrada. Para quem programa, o README e o código são uma aula sobre como o PS2 funciona por dentro, e vale ler mesmo sem nenhum jogo em mãos.
Fontes: PS2 Web Recomp (GitHub), Microsoft Learn: instalar o WSL
Produzido com auxílio de IA e revisado pela redação.
Comentários (0)
Ainda não há comentários. Comece a conversa.




Deixe seu comentário