Saltar al contenido
PS5PCEM
ParcialFirmware y HLE

HLE, emulación de firmware de alto nivel

HLE es la forma en que PS5PCEM responde a las llamadas de firmware que importa un título. Cada NID numérico se convierte en una función de Zig sobre una pila del anfitrión, y en Windows se conserva la convención de llamada System V del invitado.

Notas del repositorio hasta el 10 de octubre de 2026

Por qué el firmware no está en el juego

Un título de PlayStation 5 no lleva consigo el sistema operativo al que llama. Sus importaciones son identificadores de 11 caracteres. PS5PCEM calcula cada identificador a partir del nombre de la exportación: SHA-1 del nombre más una sal fija, y después los primeros ocho bytes del resumen en una variante de base64. Una implementación se registra con el nombre legible y puede exigir el identificador que ese nombre debe producir, de modo que una exportación mal escrita falla cuando se construye el módulo.

El enlazador dinámico busca el identificador junto con la biblioteca, el módulo y sus versiones. El mismo identificador puede existir en más de una biblioteca. Existe una búsqueda solo por identificador para las importaciones que no traen metadatos útiles, y esa alternativa se trata como último recurso porque es ambigua.

La llamada se ejecuta en una pila del anfitrión

El invitado llama al firmware de forma directa, así que la llamada empieza en la pila del hilo invitado, a menudo de un megabyte porque eso es lo que pidió el título. El trabajo del anfitrión, como abrir un archivo, necesita un marco mucho mayor. El compilador reserva ese marco al entrar, antes de cualquier retorno anticipado. Un cuerpo de firmware puede, por tanto, salirse de la pila del invitado antes de llegar a la línea que necesitaba el espacio, y el fallo queda fuera de todo mapeo del invitado.

Cada llamada HLE cambia a una pila del anfitrión por hilo mientras dura el trabajo del anfitrión. Los argumentos viajan por memoria, de modo que un único stub de ensamblador sirve para todas las firmas, incluidos los retornos en coma flotante y de agregados. Las llamadas de firmware anidadas permanecen en la pila que ya estableció la llamada exterior. En Windows el invitado usa la convención System V AMD64 y el anfitrión usa Microsoft x64, así que toda función invocable por el invitado se declara con la convención del invitado. Omitir esa declaración sigue compilando, y entonces lee los argumentos de los registros equivocados.

Qué cubre la superficie HLE

Encima de esa maquinaria, las bibliotecas de firmware ofrecen memoria directa y flexible, handles de módulo, pthreads, sincronización, archivos, savedata, fibras, fuentes, PNG, el reloj, los pads, AudioOut, AJM, NGS2, ACM, AvPlayer, APR y AMPR. La red, SSL y la NP Web API conservan el ciclo de vida de sus contextos y solicitudes, y devuelven errores deterministas sin conexión. Los diálogos que necesitan un shell del sistema terminan de inmediato con un resultado coherente sin interfaz.

La ejecución de validación del 10 de octubre superó la suite HLE completa de ReleaseSafe, 606 de 606 pruebas. Ese recuento es la suite de firmware. Por sí solo no registra una tasa de fotogramas nueva ni una partida completada nueva.

Qué está implementado

  • Cálculo de NID, un registro de símbolos con versión y un cambio a la pila del anfitrión en cada llamada de firmware.
  • Llamadas System V del invitado en Windows, donde la convención del anfitrión es Microsoft x64.
  • Memoria, archivos, hilos, savedata, medios, códecs de audio y la ruta de comandos de APR/AMPR.
  • Diálogos sin interfaz y un perfil de red sin conexión que no abre sockets del anfitrión.

Qué falta todavía

  • Las bibliotecas que el título importa y que PS5PCEM no ha implementado siguen haciendo fallar la importación.
  • La carga realmente bajo demanda de un módulo que no estaba en el grafo publicado devuelve un error.
  • Los servicios de plataforma que necesitan un shell, una cuenta o un par de red reales siguen sin estar disponibles.

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