Saltar al contenido
PS5PCEM
ParcialFirmware y HLE

Contadores AMPR

AMPR en PS5PCEM es un modelo en software, local al proceso, de los comandos de contador y de finalización de la consola. Ciento veintiocho contadores aceptan stores, actualizaciones atómicas de campo, lecturas emparejadas y esperas enmascaradas, en el orden de envío.

Notas del repositorio hasta el 10 de octubre de 2026

Para qué usa AMPR un título

En la consola, AMPR es el motor asíncrono que mueve datos de archivo y actualiza contadores en los que pueden esperar la CPU y la GPU. Los juegos lo usan para saber que una lectura ya llegó, o que puede empezar un pase posterior, sin espera activa sobre una variable compartida. PS5PCEM no emula el bloque de hardware de AMPR. Ejecuta el flujo de comandos que construyó el título, dentro del proceso, e informa de la finalización a través de la cola de eventos AMPR que registró el título.

El banco de contadores contiene 128 palabras de 32 bits. Un par es un contador par más la palabra siguiente, leídos y escritos como un único valor de 64 bits. Un único bloqueo cubre ambas mitades y cada lectura-modificación-escritura, de modo que un lector no puede observar un par rasgado. El acceso puede nombrar el par completo, la palabra de 32 bits, cualquiera de las mitades de 16 bits o uno de los cuatro bytes.

Stores, esperas y marcas de tiempo

Una escritura es un store, un OR bit a bit, un AND con el complemento, un XOR o una suma con envoltura, aplicada al campo seleccionado. Una espera compara ese campo con una referencia bajo una máscara. Las comparaciones son igual, mayor, menor, distinto, un valor de secuencia alcanzado y las formas con signo de mayor y menor. Las comparaciones de secuencia desplazan el bit de signo del campo al bit 63, de modo que la misma regla funciona a 8, 16, 32 y 64 bits.

Una espera que ya está satisfecha se completa en el sitio. Una espera que no lo está conserva la instantánea del envío y se reanuda antes de las escrituras y los eventos posteriores de ese flujo, incluso cuando un envío posterior en el mismo hilo invitado aporta el valor. La API ordinaria y la API _04_00 tienen listas de argumentos distintas. Las marcas de tiempo se registran con los comandos de contador. Las consultas de tamaño de finalización que los títulos importaban están registradas, así que esas llamadas se resuelven.

Qué se ha observado que hace esta ruta

Veintidós pruebas AMPR enfocadas pasan en ReleaseSafe, incluidas llamadas a través de la superficie de exportación real. El arranque de Grand Theft Auto III realiza más de 10,000 envíos de lectura de archivo de APR y escribe más de 350 eventos de finalización de AMPR, sin un error AMPR coincidente en esa ruta. Ese arranque no llama por sí mismo a la API de contadores. El trabajo de los contadores lo cubren las pruebas y los títulos que sí esperan los valores.

Esto es cobertura de API para los comandos que ejecuta el emulador. No es un modelo a nivel de ciclo del controlador de memoria de la consola, y no afirma la temporización del hardware.

Qué está implementado

  • Ciento veintiocho contadores, con pares coherentes de 64 bits y campos de byte, media palabra y palabra.
  • Store, OR, AND con complemento, XOR y suma con envoltura, más esperas enmascaradas y con signo.
  • Esperas bloqueadas que conservan su lugar en el flujo de comandos y se reanudan cuando llega el valor.
  • Finalización ordenada entregada a través de la cola de eventos AMPR registrada.

Qué falta todavía

  • WaitOnAddress sigue siendo un marcador de posición.
  • La temporización de hardware del bloque AMPR real no se reproduce.
  • Un comando de contador que el decodificador no reconoce no se trata en silencio como éxito.

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