HeadlinesBriefing HeadlinesBriefing.com

Jeux PS2 dans le navigateur via recompilation WebAssembly

Hacker News •
×

Les jeux de Play Station 2 fonctionnent dans le navigateur sans émulateur. Le code machine du Emotion Engine du jeu est traduit à l'avance en C++, compilé en WebAssembly, et lié contre une réimplémentation du système d'exploitation et du matériel de la PS2 qui dessine avec WebGPU.

C'est le frère de psp-web-recomp et suit la même méthode. Le premier titre apparu de cette manière est Gran Turismo 4, choisi parce que c'est l'un des jeux les plus exigeants du système : il s'appuie sur les deux unités vectorielles, sur un comportement exact en virgule flottante pour ses rediffusions et tests de licence, et sur des effets graphiques qui lisent les images renderisées comme palettes. Il joue depuis le boot jusqu'au film d'ouverture, les menus et les courses, avec musique et effets sonores, et sauvegarde sur une carte mémoire conservée dans le navigateur. Une course tourne à vitesse maximale, 50 images par seconde pour cette version PAL, dans Chrome sur un GPU intégré d'ordinateur portable à deux fois la résolution de la PS2.

God of War II est venu ensuite par les mêmes scripts. Il n'a pas besoin de code spécifique au jeu, mais il a trouvé deux bugs que Gran Turismo 4 n'av jamais déclenchés, un dans le recompilateur et un dans la temporisation de l'unité vectorielle, et quelques pièces manquantes du procesateur d'entrée/sortie de la PS2. Il joue maintenant des menus à ses scènes coupées vers le combat, et maintient 60 images par seconde dans un combat intense à la résolution de la PS2 dans Chrome.

Aucune donnée de jeu n'est incluse ici. Vous apportez une image disque d'un jeu que vous possédez, et les scripts de ce dépôt la transforment en une page web sur votre machine.

Entités clés : Entreprises : GitHub, Chrome

FAQ : Comment fonctionne la recompilation PS2 vers WebAssembly ?

L'eerecomp lit l'exécutable du jeu, suit son flux de contrôle pour trouver les fonctions, et émet du C++ pour celles-ci en unités de 16 KiB de code invité, préservant les particularités du R5900 comme les registres de 128 bits, les slots de retard de branchement, et l'unité à virgule flottante non IEEE de la PS2. Les sauts deviennent des appels queue et les bascules de thread déroulent la pile hôte, donc pas de pile par thread invité n'est nécessaire.

Source: Hacker News · Résumé par HeadlinesBriefing