O projeto

O jogo, recompilado

O Ascension traduz o código do jogo para C++ e o compila para o seu PC. Não é um emulador: é o próprio jogo, recompilado, sobre o runtime do ps3recomp. Veja como funciona, passo a passo.

O processador principal

O código do PPU do jogo vira C++ e é compilado para o seu processador.

As SPUs

Os programas das seis SPUs também são traduzidos; os mais pesados foram reescritos em código nativo, conferido contra o original.

O vídeo

Os comandos de vídeo vão para o renderizador do RPCS3 (Vulkan ou OpenGL); um renderizador próprio está em desenvolvimento.

O desempenho

Um plano aberto, medido passo a passo: o objetivo é rodar bem em processadores comuns, não só nos mais fortes.

Onde estamos

Do começo ao fim: o iSamigor zerou o jogo no PC dele (Ryzen 7 9800X3D, RX 9070 XT). Em processadores comuns ainda é lento e pode travar. Números do README do repositório, de 05 nov 2026.

Primeiro nível num Ryzen 7 5700G, medido no Windows na mesma cena. Outras máquinas: relatos dos jogadores.
OndeComeço de novembroHojeRPCS3
Primeiro nível, PC inteiro (8 núcleos, 16 threads)~21-23 fps~24 fps35-40 fps
Primeiro nível, só 4 núcleos (8 threads)~14-15 fps~17-18 fps
Menu principal~50-55 fps~50-55 fps
Luta contra o chefe13-21 fpsainda não medida de novo
Primeiro nível: fps ao longo do tempoRSX do RPCS3, PC inteiro
010203040RPCS3 35-40 fps1024 fps19 out 202622 out 202605 nov 2026
Ver os números
DatafpsO que mudou
19 out 202610O RSX do RPCS3 vira o renderizador
20 out 202615Floats das SPUs sem a verificação de faixa estendida
21 out 202616,7Cada SPU no seu próprio núcleo
22 out 202617,5Registradores do PPU em variáveis locais
23 out 202622Código das SPUs em AVX2, runtime mais leve
03 nov 202622Medido contra o RPCS3 na mesma cena
05 nov 202624RSX fora do caminho crítico, PGO, novos padrões

O que rendeu em novembro

  • Código do processador principal compilado com perfil de uso real do jogo (PGO): ~10% a menos no tempo do quadro.
  • Thread principal do jogo com prioridade acima do normal: -2,7 ms por quadro.
  • Jobs do fim do quadro espalhados por até 4-5 SPUs: -2,1 ms por quadro.
  • O thread do RSX dorme com a fila vazia em vez de girar (~8%) e as SPUs escolhem sozinhas o próximo trabalho (~1,6%).
  • Mais da geometria das SPUs (o EDGE) em código nativo, conferida contra o original: o job mais pesado ficou 28% mais rápido.

O RSX saiu do caminho crítico: a espera entre as duas passadas da geometria caiu de 9-12 ms para ~0,1 ms. Hoje ~55% do quadro é o EDGE (o módulo de geometria das SPUs), e dentro dele as interrupções do gerenciador de jobs custam tanto quanto o código dos próprios jobs: é o próximo alvo.

Estabilidade

  • CorrigidoO travamento no nível com as listas de geometria esperando para sempre (de 3 em 5 rodadas para nenhum em 4).
  • CorrigidoO travamento com CopyLocalMemory offset error: nenhum em 40 rodadas no nível.
  • ProtegidoComandos de vídeo corrompidos não derrubam mais o RSX; a causa ainda está aberta.
  • AbertoUm objeto desenhado várias vezes perto do braço gigante; o travamento BATCHJOB; um crash raro ~70-105 s depois de entrar no nível.

Marcos

O que o jogo passou a fazer, e quando. Do repositório do jogo: MILESTONES.pt-BR.md

  1. 05 nov 2026

    Multijogador: a partida rápida passa da localização do jogador e escolhe o servidor de matchmaking no servidor próprio do projeto; o jogo conecta e abre uma sessão SSL 3.0, que o servidor está aprendendo a responder.

  2. 05 nov 2026

    O RSX fora do caminho crítico: a espera dele entre as duas passadas de geometria do EDGE caiu de 9-12 ms para ~0,1 ms. O primeiro nível roda a ~24 fps no PC inteiro e ~17-18 com 4 núcleos (era ~14-15); o quadro agora é ~55% o módulo 218 das SPUs, onde as interrupções do gerenciador de jobs custam tanto quanto o código dos próprios jobs.

  3. 05 nov 2026

    O travamento CopyLocalMemory offset error corrigido: um contador do Edge Zlib, e uma proteção na troca da tabela de streaming de texturas. Nenhum em 40 rodadas no nível com 4 núcleos.

  4. 04 nov 2026

    Mais dois padrões, cada um medido dentro da mesma rodada num PC de 4 núcleos: o thread principal do jogo com prioridade acima do normal (-2,7 ms por quadro) e os jobs do fim do quadro espalhados por até 4-5 SPUs (-2,1 ms). O código do processador principal compilado com otimização guiada por perfil (PGO): ~10% a menos no tempo do quadro.

  5. 04 nov 2026

    O multijogador chega ao lobby do guerreiro com o servidor próprio do projeto (em desenvolvimento, ainda privado); o perfil do multijogador do jogador fica guardado na conta dele. As partidas online ainda não funcionam.

  6. 04 nov 2026

    Roda no macOS de novo (Apple Silicon, RSX do RPCS3), para testes: o thread do RSX agora se recupera de dados de comando corrompidos em vez de parar o jogo.

  7. 04 nov 2026

    O quadro do primeiro nível medido parte por parte: dos ~50 ms, ~21 ms são as listas de geometria das SPUs (EDGE) e ~9-12 ms a espera pelo thread do RSX entre as duas passadas dessa geometria.

  8. 03 nov 2026

    O travamento intermitente no nível achado e corrigido: uma escrita do processador principal podia se perder no meio de uma operação atômica de uma SPU, deixando as listas de geometria esperando para sempre. A reprodução passou de 3 travamentos em 5 rodadas para nenhum em 4.

  9. 03 nov 2026

    Medido no Windows contra o RPCS3 na mesma cena do primeiro nível: 22 fps nativo, 35-40 no RPCS3. Duas mudanças viram padrão: o thread do RSX dorme com a fila de comandos vazia em vez de girar (~8% a menos no tempo do quadro num PC de 4 núcleos), e as SPUs escolhem sozinhas o próximo trabalho (~1,6% a menos no mesmo PC).

  10. 23 out 2026

    Primeira luta contra um chefe (13-21 fps lutando). O perfil ali mostra o tempo das SPUs espalhado por muitas partes pequenas, então o próximo trabalho ataca os custos que todo job das SPUs paga, não uma função de cada vez.

  11. 23 out 2026

    O pós-processamento que suaviza as bordas do quadro roda em código nativo: suas quatro etapas mais pesadas nas SPUs reescritas em C, idênticas ao original em 12 milhões de chamadas conferidas; esse trabalho custa cerca da metade.

  12. 23 out 2026

    Nível de ~17,5 → ~22 fps: código das SPUs traduzido compilado para AVX2, runtime das SPUs mais leve.

  13. 23 out 2026

    Launcher Vídeo → Efeitos: profundidade de campo, motion blur e MLAA podem ser desligados (os mesmos patches que o RPCS3 oferece, achados no disco 1.00). Experimental: as texturas ainda falham com eles desligados.

  14. 23 out 2026

    Mais código das SPUs que ainda era interpretado agora é recompilado, e duas partes carregadas por streaming do job de geometria rodam em código nativo.

  15. 22 out 2026

    Nível de ~15 → ~17,5 fps: o código traduzido do processador principal guarda os registradores do jogo em variáveis locais em vez da memória (traduzido de novo; 1,5-1,8x em funções isoladas).

  16. 21 out 2026

    Replay de jobs das SPUs: jobs gravados do jogo rodam de novo fora dele e são conferidos byte a byte pelo que escrevem, com tempo e profiling. Módulo 218 (geometria por draw) decifrado: descompressão de índices e transformação de posições escritas em código nativo, idênticas nos jobs gravados; o resto do job vai para nativo em seguida.

  17. 21 out 2026

    Nível de ~15 → ~16,7 fps: cada SPU no seu próprio núcleo, o thread principal do PPU no núcleo 0.

  18. 20 out 2026

    Nível de ~10 → ~15 fps: floats das SPUs traduzidos sem a verificação de faixa estendida (as regras "aproximadas" do RPCS3), sem diagnósticos de local store no código traduzido, código contíguo de módulos de jobs traduzido como uma função só, código de streaming achado por um índice.

  19. 19 out 2026

    Texturas do nível corretas: o espaço de IO devolvido no unmap, então os vertex streams do cenário não leem mais o buffer de comandos.

  20. 19 out 2026

    Menu principal de 12 → 28 fps no RSX do RPCS3: as transferências das SPUs para superfícies que a GPU protegia estavam sendo descartadas.

  21. 19 out 2026

    O RSX do RPCS3 como renderizador (Windows e macOS): as rodadas de pós-processamento da GPU e das SPUs no ritmo do próprio jogo.

  22. 18 out 2026

    O primeiro nível (Kratos acorrentado): corrigida uma corrida que perdia tasks no escalonador de tasksets do SPURS; o nível carrega e roda (~16 fps no live draw).

  23. 17 out 2026

    Português do Brasil (vozes do disco americano, textos já no disco europeu); mods como receitas, Pular intro incluído.

  24. 17 out 2026

    Menu principal de 1 → 12 fps: os 18 módulos de jobs que o carregamento nunca carrega também traduzidos (33 ao todo), código de streaming achado dentro de GETs maiores e pelo conteúdo.

  25. 17 out 2026

    Um launcher: vídeo, idioma, legendas e mods; o jogo desenha dentro da janela dele.

  26. 17 out 2026

    O menu principal aparece (cerca de 1 fps).

  27. 17 out 2026

    A cinemática na velocidade certa e sincronizada (29,98 fps), a parada no fim do carregamento resolvida, o módulo 214 traduzido inteiro (os reports da GPU esperam as tasks de pós-processamento, nenhum aviso de task perdido, o cellVdec segura as AUs).

  28. 17 out 2026

    O RsxSync acordado pelos reports da GPU, operações SPU em SSE4.1, 381 entradas de módulos de jobs, o interpretador respeitando a habilitação de interrupções. O vídeo da cinemática a 72-90% da velocidade.

  29. 17 out 2026

    Desempenho, parte dois: traduções independentes de posição do código de jobs carregado por streaming, SSE4.1 no código das SPUs traduzido. Menus de ~10 → 26-55 fps, cinemática de ~35 → 45-60 fps.

  30. 17 out 2026

    Desempenho: os 15 módulos de jobs do Wws traduzidos, um painel de desempenho. Menus de primeiro uso de 5-6 → ~10 fps.

  31. 17 out 2026

    A cinemática de abertura passa com imagem e som (cellVdec com FFmpeg em tempo de execução; a "tela preta" era o fade do jogo esperando por ela).

  32. 16 out 2026

    Os menus ficam legíveis: atlas de fonte X16, sRGB do framebuffer e gama das texturas, DDX/DDY de fragmento no motor live draw.

  33. 16 out 2026

    Passa da tela de carregamento (tasksets do SPURS: inícios duplicados, tamanho do Taskset2 e event flags, tasks criadas pelas SPUs).

  34. 16 out 2026

    Traduzido de novo com o tradutor v0.15 (um erro de spill-reload corrompia um heap por volta do quadro 12): a tela de carregamento.

  35. 16 out 2026

    O renderizador principal passa do segundo quadro: SPURS2 (32 workloads, tempArea, flags1), o pós-processamento do quadro nas SPUs, a sincronização entre GPU e SPUs.

  36. 15 out 2026

    As telas de abertura aparecem: o texto legal, "Sony Computer Entertainment presents", Santa Monica Studio, o aviso do jogo online (motor live draw). O mesmo no macOS, pelo Metal.

  37. 15 out 2026

    Passa pelas verificações do sistema e monta os arquivos do jogo (layout do sys_lwcond_t, arquivos acima de 2 GB, Edge Zlib no host).

  38. 15 out 2026

    EBOOT.BIN decriptado, imports e funções encontrados, 1,8 milhão de linhas de C++ traduzidas e compiladas; o executável inicia.

Créditos

ps3recomp
sp00nznet e colaboradores: o recompilador, o runtime e as bibliotecas de sistema.
RPCS3
o código do RSX usado como renderizador (GPL-2.0).
iSamigor
testes num segundo PC, correções no runtime e o primeiro a zerar o jogo.
Cinzel
a fonte dos títulos (SIL Open Font License).