PS2 Web
Un émulateur PlayStation 2 qui tourne dans un onglet — et les trois défauts trouvés en le faisant démarrer.
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