Ir para o conteúdo
PS5PCEM
FuncionaFirmware e HLE

Savedata

Um slot de save montado vira um /savedata0 gravável. O título usa a API de arquivo comum, e a execução seguinte encontra os mesmos arquivos sob o código de produto que o título publica.

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

Onde um save vive

A instalação do jogo é somente leitura, pode ficar em mídia removível e é substituída por inteiro quando recebe patch. Um save precisa sobreviver aos três casos. O PS5PCEM guarda os slots em savedata/<titleId>/<slot>/ sob o diretório inicial do emulador, indexados pelo código de produto que o título informa. Dois dumps do mesmo jogo compartilham saves. Dois jogos diferentes não.

O nome do slot vem do convidado e é saneado antes de virar um diretório. Separadores, os dois-pontos da unidade e vínculos de diretório pai viram sublinhados. Descartar esses caracteres faria dois nomes diferentes caírem no mesmo diretório. Um nome que não pode ser diretório de forma alguma recua para um nome fixo, porque perder o save é pior do que colocá-lo num lugar previsível.

Montagem e verificações de existência

Uma montagem resolve o slot e aponta /savedata0 para ele. Criar um slot ausente só acontece quando o título pediu um. Uma sondagem de um save que o título nunca escreveu recebe um resultado de ausência, que é o que o título espera. Tudo o que acompanha o título permanece somente leitura. A montagem do save é o lugar gravável.

A existência é respondida a partir do caminho de metadados, não pela abertura do arquivo. Uma montagem que só tinha sucesso na hora de abrir fazia toda verificação de existência falhar, e Jets 'n' Guns 2 reescrevia o perfil a cada execução por causa disso. Listar os slots que um título escreveu também tem resposta. A montagem ainda informa se abriu um save existente ou criou um novo. A API de save em formato de bloco usa um blob separado por título sob sce_sdmemory, carregado quando o título o reserva e escrito quando o título pede uma sincronização.

Slots incompletos

A descoberta na inicialização esconde slots interrompidos que contêm só metadados de firmware ou arquivos vazios de preparação. Cat Quest III tinha um slot de configuração reproduzido apenas com path.txt. O título então falhava num Data.dat ausente e esperava para sempre depois do quadro de inicialização. A busca agora ignora esse slot incompleto e continua.

O lançador agrupa todo slot local por ID de título na página Saves, inclusive saves escritos por outro cartão da biblioteca. Uma compilação de desenvolvimento sob zig-out resolve o diretório inicial do emulador para a raiz do repositório. Uma compilação empacotada usa o próprio diretório. Execuções pela linha de comando e pelo lançador do mesmo pacote portanto compartilham uma única raiz de saves.

O que está implementado

  • Montagens /savedata0 graváveis indexadas por ID de título, com nomes de slot saneados.
  • Verificações de existência, listagem de slots e um informe de se a montagem criou o save.
  • Um blob sce_sdmemory por título para a API de save em formato de bloco.
  • Ocultação de slots interrompidos que não contêm carga real de save.

O que ainda falta

  • Os saves são diretórios do anfitrião. O diálogo de dados de save do console e a sincronização na nuvem não são apresentados.
  • Um slot que o título não pediu para criar é informado como ausente.
  • Troféus, atividades e outros registros apoiados em conta ficam fora desta montagem.

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