dr1ms

PS2 Web

Un émulateur PlayStation 2 qui tourne dans un onglet — et les trois défauts trouvés en le faisant démarrer.

Statut
Livré · en ligne
Domaine
Jeu · Web

Un émulateur PlayStation 2 qui tourne entièrement dans l’onglet, compilé en WebAssembly. Le travail n’a pas été de porter l’émulateur — il l’était déjà — mais de trouver pourquoi un jeu précis refusait de démarrer, et de corriger les trois défauts découverts en chemin. Deux d’entre eux touchent n’importe quel titre placé dans la même situation.

Résultats mesurés

  • Un verrou entre deux lectures de disque simultanées empêchait le démarrage : une commande renvoyait zéro pendant qu'une autre attendait, et les deux se bloquaient mutuellement. Le défaut atteint tout jeu faisant des accès disque concurrents.
  • Le cache de textures restait figé à cause de trente-deux octets manquants : le jeu annonçait une image de 512×256 puis en envoyait un peu moins, et le cache n'était vidé que si le compteur tombait pile à zéro — ce qui n'arrivait jamais. Les cinématiques restaient blanches.
  • L'image disque est lue par plages HTTP plutôt que téléchargée : 18,5 Mo transférés au lieu de 1371 pour lancer une partie.

Technologies

  • c++
  • emscripten
  • webassembly
  • webgl
  • react

Faits

origine
fork de play!, de jean-philippe desjardins — l'émulation n'est pas réécrite
correctifs
trois, dont deux de portée générale
compatibilité
liste de 2661 jeux reprise du registre officiel
isolation
sharedarraybuffer, donc coop/coep et https obligatoires

Liens

← Tous les projets