Ir para o conteúdo
PS5PCEM
ParcialFirmware e HLE

HLE, emulação de firmware em alto nível

HLE é como o PS5PCEM responde às chamadas de firmware que um título importa. Cada NID numérico vira uma função Zig numa pilha do anfitrião, com a convenção de chamada System V do convidado preservada no Windows.

Notas do repositório até 10 de outubro de 2026

Por que o firmware não está no jogo

Um título de PlayStation 5 não traz o sistema operacional que chama. Suas importações são identificadores de 11 caracteres. O PS5PCEM calcula cada identificador a partir do nome exportado: SHA-1 do nome mais um sal fixo e, em seguida, os oito primeiros bytes do resumo numa variante de base64. Uma implementação se registra pelo nome legível e pode exigir o identificador que esse nome deve produzir, de modo que uma exportação com erro de grafia falha quando o módulo é compilado.

O ligador dinâmico procura o identificador junto com a biblioteca, o módulo e as versões deles. O mesmo identificador pode existir em mais de uma biblioteca. Existe uma busca só pelo identificador para importações que não trazem metadados utilizáveis, e essa alternativa é tratada como último recurso porque é ambígua.

A chamada roda numa pilha do anfitrião

O convidado chama o firmware diretamente, então a chamada começa na pilha da thread convidada, muitas vezes de um megabyte porque foi isso que o título pediu. Trabalho do anfitrião, como abrir um arquivo, precisa de um quadro de pilha bem maior. O compilador reserva esse quadro na entrada, antes de qualquer retorno antecipado. Um corpo de firmware pode, portanto, sair da pilha convidada antes de chegar à linha que precisava do espaço, e a falha cai fora de todo mapeamento convidado.

Toda chamada HLE troca para uma pilha do anfitrião por thread enquanto dura o trabalho do anfitrião. Os argumentos viajam pela memória, então um único stub em assembly serve a qualquer assinatura, inclusive retornos em ponto flutuante e de agregados. Chamadas de firmware aninhadas permanecem na pilha que a chamada externa já estabeleceu. No Windows o convidado usa a convenção System V AMD64 enquanto o anfitrião usa Microsoft x64, então toda função chamável pelo convidado é declarada com a convenção do convidado. Omitir essa declaração ainda compila, e então os argumentos são lidos dos registradores errados.

O que a superfície HLE cobre

Por cima dessa maquinaria, as bibliotecas de firmware fornecem memória direta e flexível, handles de módulo, pthreads, sincronização, arquivos, savedata, fibras, fontes, PNG, o relógio, controles, AudioOut, AJM, NGS2, ACM, AvPlayer, APR e AMPR. Rede, SSL e a NP Web API mantêm o contexto e o tempo de vida das requisições e devolvem erros offline determinísticos. Diálogos que precisam de um shell do sistema terminam imediatamente com um resultado coerente e sem interface.

A execução de validação de 10 de outubro passou a suíte HLE completa em ReleaseSafe, 606 de 606 testes. Essa contagem é a da suíte de firmware. Ela não registra, por si só, uma nova taxa de quadros nem uma nova partida terminada.

O que está implementado

  • Cálculo de NID, um registro de símbolos com versão e uma troca para a pilha do anfitrião em toda chamada de firmware.
  • Chamadas System V do convidado no Windows, onde a convenção do anfitrião é Microsoft x64.
  • Memória, arquivos, threads, savedata, mídia, codecs de áudio e o caminho de comandos APR/AMPR.
  • Diálogos sem interface e um perfil de rede offline que não abre soquetes do anfitrião.

O que ainda falta

  • Bibliotecas que o título importa e que o PS5PCEM ainda não implementou continuam fazendo a importação falhar.
  • O carregamento realmente sob demanda de um módulo que não estava no grafo publicado devolve um erro.
  • Serviços de plataforma que precisam de um shell, de uma conta ou de um par de rede reais permanecem indisponíveis.

Mecanismos relacionados

O que estas páginas descrevem

O texto segue as notas de arquitetura e os relatórios de outubro de 2026 no repositório do PS5PCEM. Um teste pontual que passa não é uma nova taxa de quadros nem uma nova conclusão de jogo.

Todas as tecnologias