HLE, émulation de haut niveau du micrologiciel
HLE est la façon dont PS5PCEM répond aux appels de micrologiciel qu'un titre importe. Chaque NID numérique devient une fonction Zig sur une pile hôte, la convention d'appel System V de l'invité étant préservée sous Windows.
Notes du dépôt jusqu’au 10 octobre 2026
Pourquoi le micrologiciel n'est pas dans le jeu
Un titre PlayStation 5 ne transporte pas le système d'exploitation qu'il appelle. Ses imports sont des identifiants de 11 caractères. PS5PCEM calcule chaque identifiant à partir du nom d'export : SHA-1 du nom plus un sel fixe, puis les huit premiers octets du condensat dans une variante de base64. Une implémentation s'enregistre sous le nom lisible et peut exiger l'identifiant que ce nom doit produire, de sorte qu'un export mal orthographié échoue à la construction du module.
L'éditeur de liens dynamique recherche l'identifiant avec la bibliothèque, le module et leurs versions. Le même identifiant peut exister dans plus d'une bibliothèque. Une recherche par identifiant seul existe pour les imports qui ne portent aucune métadonnée utilisable, et ce repli est traité comme un dernier recours parce qu'il est ambigu.
L'appel s'exécute sur une pile hôte
L'invité appelle le micrologiciel directement, donc l'appel commence sur la pile du thread invité, souvent d'un mégaoctet parce que c'est ce que le titre a demandé. Le travail hôte, comme l'ouverture d'un fichier, a besoin d'un cadre bien plus grand. Le compilateur réserve ce cadre à l'entrée, avant tout retour anticipé. Un corps de micrologiciel peut donc sortir de la pile invitée avant d'atteindre la ligne qui avait besoin de l'espace, et la faute tombe en dehors de tout mappage invité.
Chaque appel HLE bascule vers une pile hôte par thread pour la durée du travail hôte. Les arguments transitent par la mémoire, donc une seule souche d'assemblage sert toutes les signatures, y compris les retours en virgule flottante et les retours d'agrégats. Les appels de micrologiciel imbriqués restent sur la pile que l'appel extérieur a déjà établie. Sous Windows, l'invité utilise la convention System V AMD64 tandis que l'hôte utilise Microsoft x64, donc chaque fonction appelable par l'invité est déclarée avec la convention invitée. Omettre cette déclaration compile encore, puis lit les arguments dans les mauvais registres.
Ce que la surface HLE couvre
Au-dessus de ce mécanisme, les bibliothèques de micrologiciel fournissent la mémoire directe et flexible, les handles de modules, les pthreads, la synchronisation, les fichiers, le savedata, les fibres, les polices, le PNG, l'horloge, les manettes, AudioOut, AJM, NGS2, ACM, AvPlayer, APR et AMPR. Le réseau, SSL et l'API Web NP conservent leurs durées de vie de contexte et de requête et renvoient des erreurs hors ligne déterministes. Les boîtes de dialogue qui ont besoin d'un shell système se terminent immédiatement avec un résultat cohérent sans interface.
La campagne de validation du 10 octobre a fait passer la suite HLE ReleaseSafe complète, 606 tests sur 606. Ce compte est celui de la suite du micrologiciel. Il n'enregistre pas, à lui seul, une nouvelle fréquence d'images ni une nouvelle partie menée jusqu'au bout.
Ce qui est en place
- Calcul des NID, un registre de symboles versionné et un basculement de pile hôte pour chaque appel de micrologiciel.
- Appels System V de l'invité sous Windows, où la convention hôte est Microsoft x64.
- Mémoire, fichiers, threads, savedata, médias, codecs audio et le chemin de commandes APR/AMPR.
- Boîtes de dialogue sans interface et un profil réseau hors ligne qui n'ouvre pas de sockets hôtes.
Ce qui manque encore
- Les bibliothèques que le titre importe et que PS5PCEM n'a pas implémentées font encore échouer l'import.
- Le chargement véritablement à la demande d'un module absent du graphe publié renvoie une erreur.
- Les services de plateforme qui exigent un vrai shell, un compte ou un pair réseau restent indisponibles.
Mécanismes liés
Ce que ces pages décrivent