Saltar al contenido
PS5PCEM
FuncionaFirmware y HLE

Partidas guardadas

Una ranura de partida montada se convierte en un /savedata0 con escritura. El título usa la API de archivos ordinaria, y el siguiente arranque encuentra los mismos archivos bajo el código de producto que publica el título.

Notas del repositorio hasta el 10 de octubre de 2026

Dónde vive una partida

La instalación del juego es de solo lectura, puede estar en un medio extraíble y se sustituye por completo cuando se parchea. Una partida tiene que sobrevivir a las tres cosas. PS5PCEM guarda las ranuras en savedata/<titleId>/<slot>/ bajo el directorio de inicio del emulador, con clave según el código de producto que informa el título. Dos volcados del mismo juego comparten partidas. Dos juegos distintos, no.

El nombre de la ranura viene del invitado y se sanea antes de convertirse en un directorio. Los separadores, los dos puntos de la unidad y los enlaces al directorio padre se vuelven guiones bajos. Eliminar esos caracteres permitiría que dos nombres distintos colapsaran en un solo directorio. Un nombre que no puede ser un directorio en absoluto cae a un nombre fijo, porque perder la partida es peor que colocarla en un sitio predecible.

Montaje y comprobaciones de existencia

Un montaje resuelve la ranura y apunta /savedata0 hacia ella. Crear una ranura ausente solo ocurre cuando el título pidió una. Una sonda de una partida que el título nunca escribió obtiene un resultado de ausencia, que es lo que el título espera. Todo lo que viene con el título sigue en solo lectura. El montaje de la partida es el lugar con escritura.

La existencia se responde desde la ruta de metadatos, no abriendo el archivo. Un montaje que solo tenía éxito al abrir hacía fallar todas las comprobaciones de existencia, y Jets 'n' Guns 2 reescribía su perfil en cada arranque por eso. También se responde el listado de las ranuras que un título ha escrito. El montaje informa además de si abrió una partida existente o creó una nueva. La API de partidas en forma de bloque usa un blob distinto por título bajo sce_sdmemory, que se carga cuando el título lo reserva y se escribe cuando el título pide una sincronización.

Ranuras incompletas

El descubrimiento en el arranque oculta las ranuras interrumpidas que solo contienen metadatos de firmware o archivos de preparación vacíos. Cat Quest III tenía una ranura de ajustes reproducida que solo contenía path.txt. El título fallaba entonces por un Data.dat ausente y esperaba para siempre después de su fotograma de arranque. La búsqueda ahora se salta esa ranura incompleta y continúa.

El lanzador agrupa cada ranura local por ID de título en la página de partidas, incluidas las partidas escritas por otro mosaico de la biblioteca. Una compilación de desarrollo bajo zig-out resuelve el directorio de inicio del emulador a la raíz del repositorio. Una compilación empaquetada usa su propio directorio. Por eso los arranques por línea de comandos y desde el lanzador del mismo paquete comparten una sola raíz de partidas.

Qué está implementado

  • Montajes /savedata0 con escritura, con clave por ID de título y nombres de ranura saneados.
  • Comprobaciones de existencia, listado de ranuras y un informe de si el montaje creó la partida.
  • Un blob sce_sdmemory por título para la API de partidas en forma de bloque.
  • Ocultación de las ranuras interrumpidas que no contienen una partida real.

Qué falta todavía

  • Las partidas son directorios del anfitrión. El diálogo de datos de partida de la consola y la sincronización en la nube no se presentan.
  • Una ranura que el título no pidió crear se informa como ausente.
  • Los trofeos, las actividades y otros registros respaldados por la cuenta quedan fuera de este montaje.

Mecanismos relacionados

Qué describen estas páginas

El texto sigue las notas de arquitectura y los informes de octubre de 2026 del repositorio PS5PCEM. Un test concreto que pasa no es una tasa de fotogramas nueva ni una partida terminada nueva.

Todas las tecnologías