Ir para o conteúdo
PS5PCEM
ParcialFirmware e HLE

Identificadores e leituras de arquivo APR

O APR resolve um arquivo do título uma vez e depois carrega um identificador local ao processo nos buffers de comando seguintes. Leituras AMPR adiadas reabrem esse mesmo arquivo /app0 somente leitura sem manter um descritor do anfitrião para sempre.

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

Identificadores em vez de caminhos

A API do acelerador não quer um caminho em todo comando. O título resolve um caminho, recebe um identificador compacto de arquivo e coloca esse identificador nos comandos de leitura que envia depois. O PS5PCEM guarda o caminho e o tamanho do arquivo junto ao identificador. A tabela é local ao processo. Caminhos do anfitrião não são devolvidos ao convidado.

Os arquivos vêm da montagem /app0 somente leitura do título. Uma entrada resolvida pode ser reaberta quando uma leitura adiada executa, então o emulador não precisa segurar todo descritor durante a vida inteira do processo. A tabela em cache guarda até 64 arquivos.

Buffers de comando

Um envio é um buffer de comandos do convidado, não uma única chamada de leitura. O PS5PCEM aceita até 32 buffers de comando vivos. Cada buffer é limitado: 32 leituras, 32 escritas, 32 mapas, 32 registros de conclusão e 128 operações. Até 64 envios podem estar em curso, e um pool automático guarda oito buffers. Uma leitura nomeia o identificador do arquivo, um destino convidado, um tamanho e um deslocamento no arquivo, e pode nomear um endereço que recebe a contagem de bytes.

O leitor rejeita um identificador desconhecido, um arquivo ausente, um buffer de comando curto ou desalinhado e um pedido que sairia do arquivo ou do destino. Uma única leitura é limitada a 4 GiB, que é o limite da interface, não uma promessa de que um título emita leituras desse tamanho. Comandos de mapa usam o tamanho de página AMM de 16 KiB que o convidado espera.

Como o APR encontra o AMPR

O APR é dono da tabela de arquivos e do tempo de vida do buffer de comandos. O AMPR é dono dos contadores, das esperas e dos eventos de conclusão que dizem ao título que o trabalho terminou. Um título pode enfileirar muitas leituras de arquivo e depois esperar um contador que o comando de conclusão atualiza. A primeira inicialização de Grand Theft Auto III é o grande caso observado: as leituras passam por esse caminho, e os eventos de conclusão voltam pela fila AMPR.

A E/S assíncrona do kernel, a outra API de arquivo, é uma página à parte. O APR é o fluxo de comandos do acelerador. A API de lote do kernel é a lista de pedidos no estilo POSIX.

O que está implementado

  • Identificadores de arquivo locais ao processo para caminhos /app0 somente leitura, com o tamanho retido para leituras posteriores.
  • Buffers de comando limitados para leituras, escritas, mapas e registros de conclusão.
  • Leituras adiadas que reabrem o mesmo arquivo do título.
  • Rejeição verificada de arquivos desconhecidos, estouro e buffers malformados.

O que ainda falta

  • O caminho é uma execução em software do buffer de comandos, não o motor de DMA do console.
  • Arquivos graváveis de pacote ficam fora de /app0. Os saves passam pela montagem de savedata.
  • Um arquivo que o resolvedor não viu não pode ser inventado a partir de um identificador nu.

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