Show HN: Jogos de PS2 recompilados estaticamente para WebAssembly

Um novo projeto recompila estaticamente jogos de PlayStation 2 para WebAssembly, para que possam rodar em um navegador ou como binários nativos, modelando componentes-chave de hardware como unidades vetoriais e o sintetizador gráfico em vez de fazer emulação ciclo-a-ciclo. Os comentadores discutem em profundidade os trade-offs técnicos de precisão de timing, desempenho em dispositivos que vão de netbooks antigos ao Steam Deck, e escolhas de API gráfica como WebGPU versus OpenGL legado. O trabalho também levanta questões mais amplas sobre como a recompilação assistida por IA afeta a preservação de jogos, o risco de pirataria e os incentivos de longo prazo para o desenvolvimento comercial de jogos.

Abordagem técnica & precisão

  • Recompilação AOT estática do código “EE” do PS2 para WebAssembly / nativo; cada bloco básico decrementa um orçamento de ciclos.
  • O timing é aproximado, não ciclo-a-ciclo; interrupções, DMA, timers e vblank são entregues nos limites dos blocos.
  • Comentadores observam que a maioria dos jogos sincroniza por interrupções/semafóros, então isso funciona para muitos títulos; bugs de timing aparecem como casos-limite específicos a corrigir.
  • Microprogramas do VU1 são capturados quando enviados pela primeira vez via DMA, compilados AOT por jogo; os ainda não vistos são compilados JIT para WASM.
  • Algumas peculiaridades do pipeline do PS2 são modeladas: latência de flags, floats não IEEE no estilo PS2 com clamp, e o VU1 em sua própria thread.
  • O GS (gráficos) é emulado com shaders de computação do WebGPU; a amostragem de texturas é um grande gargalo de GPU. O frontend do GS e o VU1 ocupam grandes parcelas da CPU.

Desempenho & plataformas-alvo

  • A build para navegador roda bem em uma iGPU razoavelmente forte em resolução 1x–2x; GPUs integradas podem ficar limitadas pela GPU.
  • A build nativa para Linux usa Vulkan via wgpu + SDL2 (janela, áudio, gamepad). No Steam Deck, 1x de resolução é a meta realista; o host nativo multithread ainda está em andamento.
  • Há discussão sobre mirar APIs mais antigas como OpenGL 2.1 / WebGL 1 versus WebGPU/WebGL 2.0 mais novas para hardware mais amplo, com trade-offs em complexidade e “custo de tokens”.

Controles & fidelidade de entrada

  • Há forte preocupação com perder botões sensíveis à pressão do PS2 (por exemplo, em Gran Turismo).
  • Alguns relatam sucesso usando adaptadores específicos de PS2 para PS3 e controles modernos com curvas corretas; outros acham os mapeamentos insatisfatórios ou ergonomicamente ruins.

Distribuição, legalidade & hospedagem

  • O autor não pode hospedar legalmente builds compiladas dos jogos; os usuários precisam converter suas próprias ISOs localmente.
  • Sugere-se rodar o recompilador em WASM para que a conversão aconteça no lado do cliente, evitando a distribuição de ativos protegidos por direitos autorais.
  • Hospedar jogos completos no navegador é comparado a outros arquivos em zona cinzenta; há expectativa de possíveis remoções.

IA, confiança e terminologia

  • Reações mistas às recompilações com IA: entusiasmo pelo progresso técnico versus frustração com os impactos sobre programação como profissão.
  • Ceticismo em relação a projetos que afirmam “sem emulação” enquanto ainda interpretam alguns núcleos (por exemplo, IOP) ou modelam fortemente o hardware.
  • Reclamações de que alguns “ports nativos” são apenas emuladores empacotados com ROMs, dificultando encontrar recompilações genuínas.
  • Preocupações de segurança: descompilações nativas poderiam esconder malware; alguns argumentam que WASM é relativamente mais seguro, mas os ecossistemas de emuladores/ROMs sempre tiveram problemas de confiança.

Pirataria, incentivos e preservação de jogos

  • Debate sobre se a recompilação e a hospedagem fáceis minam os incentivos para fazer jogos de grande orçamento.
  • Contra-argumentos: a pirataria existe há décadas; as pessoas ainda compram jogos, e títulos antigos muitas vezes nem são vendidos ou suportados.
  • Vários veem as recompilações como ferramentas de preservação e uma forma de jogar clássicos nativamente em várias plataformas, incluindo dispositivos embarcados e PCs portáteis.