La PlayStation 2 a célébré ses 20 ans au Japon le 4 mars dernier. C’est ce jour-là en 2020, lors d’une de mes pérégrinations sur Twitter que je suis tombé sur le tweet de Tom James, un passionné de jeux vidéo et traducteur japonais <-> anglais résidant au Japon. Dans son message, il indiquait avoir traduit en anglais cinq articles de blog de l’ingénieur japonais Tetsuya Iida. Si ce nom ne vous dit rien, c’est presque normal. Mais nul doute que vous avez profité de son travail à un moment ou à un autre. Il s’agit en effet de l’ingénieur à qui l’on doit la rétrocompatibilité sur PS2 avec la ludothèque de sa grande sœur, la PS1. Après une première lecture passionnante, je me dis qu’il faut absolument que ce contenu puisse toucher un plus large public. Je me propose donc pour le traduire dans notre belle langue française. Il a accepté sans problème et me voilà parti pour accomplir cette tâche inopinée mais ô combien cruciale. J’ai pris la liberté de changer les images pour en prendre certaines de meilleure résolution pour un meilleur confort de lecture.
La PlayStation 2 est ma console favorite et j’ai énormément profité des fruits des travaux de Tetsuya Iida et son équipe. J’ai pu rattraper mon retard avec certains grands JRPGs comme Grandia ou me replonger dans Final Fantasy VII et VIII sans avoir besoin de rebrancher ma PlayStation. Pourtant même si Sony n’a pas inventé cette technologie (la Genesis permettait de jouer à des jeux Master System et Game Gear par le biais d’adaptateur ; les consoles portables de Nintendo sont presque toutes compatibles entre elles), beaucoup s’en sont servi après. Les jeux Game Cube étaient compatibles avec la Nintendo Wii ; les jeux Wii avec la Wii U ; certains jeux Xbox avec la Xbox 360 ; et bien évidemment les jeux PS1 et PS2 fonctionnaient avec la PS3 (ce qui sera amené à changer pour les eux PS2 comme nous le savons tous). Mais en 2013, Sony a changé son fusil d’épaule et décidé que les jeux de précédentes générations ne seraient pas compatibles avec la PS4. Jim Ryan, le président de SCEA avait dit à l’époque au magazine Time : « [Pourquoi] on voudrait jouer avec ça ? ». Pourtant Microsoft en fera un de ses chevaux de bataille pour le plus grand plaisir des joueurs. La réception a été telle auprès des joueurs que le constructeur américain persiste et signe avec la Xbox de nouvelle génération. Les rumeurs font état d’une rétrocompatibilité similaire pour la PS5. Mais le géant japonais est resté bien discret depuis des semaines. Quoi qu’il en soit, il reste que sans les travaux de Tetsuya Iida, l’industrie aurait un visage bien différent.
J’ai développé l’émulateur rétrocompatible PS1 pour Sony Computer Entertainment
Par Tetsuya Iida (traduit en anglais par Tom James – traduit de l’anglais par Antoine Clerc-Renaud)
J’ai intégré Sony Computer Entertainment en 1996. Je faisais partie de la seconde vague d’embauche des nouveaux diplômés. À l’époque, je pense que l’équipe de recherche et développement de SCE comptait environ 50 personnes, avec Ken Kutaragi en leader pendant que les gars comme moi étaient tout au bas de l’échelle. Si je me souviens bien, j’ai été embauché juste après que Square a intégré les rangs de Sony en tant que développeur tiers. C’est à peu près en ce temps là que Final Fantasy VII voyait le jour. J’ai eu la chance de voir des cinématiques et, comme beaucoup de personnes, je me rappelle du choc en voyant Aerith mourir si brusquement et de façon si dramatique…
Je crois que ma première tâche après avoir rejoint SCE a été de programmé une sorte de convertisseur vidéo qui prenait un fichier de type film pour lui appliquer des filtres. C’est aussi le tout premier programme que j’ai codé dans ma vie professionnelle. En fait, quand j’ai rejoint l’équipe, j’était probablement le membre le moins utile de tous. Je n’exagère pas quand je dis cela. Je n’avais aucune compétence en ingénierie électrique et je ne savais même pas comment démarrer Windows 3.1, et encore moins coder un quelconque programme. Je me demande même, encore aujourd’hui, ce que les gens de Sony ont bien pu voir chez moi lorsqu’ils ont décidé de m’embaucher.
Heureusement, j’ai eu la chance d’apprendre à programmer grâce à une formation interne. Le matériel m’était facilement accessible et j’en suis ressorti avec l’impression que je pouvais programmer à peu près n’importe quoi. Une fois la formation terminée, j’ai fait beaucoup de choses. J’ai été en charge de tout, de l’inspection des émulateurs CD aux convertisseurs de modèles de données, libc, et plus. C’était en plein durant ces tâches, vers 1998—c’est en tout cas ce dont je me souviens—que notre division a été mise au courant de la prochaine génération de PlayStation.
À ce moment précis, le groupe de recherche et développement a été divisé en deux équipes. La première équipe a bien évidemment continué de se concentrer sur le hardware de la PlayStation encore d’actualité, tandis que l’autre équipe s’est affairée à la prochaine génération. En tant que personne qui aime expérimenter de nouvelles choses, je savais que je voulais faire partie de la seconde équipe. Je pense que j’ai dû passer un entretien pour la rejoindre parce que je me souviens y avoir été assigné. C’était quelque chose qui m’avait vraiment enthousiasmé.
Une fois que j’avais intégré l’équipe de la PlayStation 2, on m’a confié la tâche de faire fonctionner les jeux PS1 sur cette nouvelle console. À l’époque, c’était tout à fait normal que les anciens jeux ne fonctionnent pas sur les nouvelles machines, mais SCE voulait renverser la vapeur, ce qui était avant-gardiste de leur part. De plus, étant donné que je ne faisais partie de l’entreprise que depuis quelques années, j’étais ravi d’être autorisé à travailler sur un élément aussi important.
Lorsque la décision a été prise de rendre la PS2 rétrocompatible avec les jeux PS1, l’idée était de réutiliser le processeur central de la PS1 en tant que processeur d’entrée/sortie pour le nouveau matériel. Sauf que, aucun des autres composants de la PS1 n’allait être utilisé. Ce qui signifiait que le reste allait devoir être émulé de façon logicielle. Comme j’avais été impliqué dans l’ingénierie logicielle jusque là, il m’incombait de coder l’émulateur pour le SPU de la PS1, soit son processeur sonore.
La puce sonore de la PS2 a une structure en deux parties : le cœur et le processeur de signal numérique (DSP). Un des membres senior de l’équipe qui avait travaillé spécifiquement en ingénierie du son s’est chargé de l’émulation du côté du DSP. Pendant ce temps, je concentrais mon attention sur le cœur. Pour ce faire, nous nous sommes établis chez l’un de nos sous-traitants. Nous nous sommes coupés du monde afin d’écrire les programmes nécessaires. Il n’y avait aucune fenêtre dans cette pièce et je me rappelle m’être souvent disputé avec l’autre ingénieur pendant que nous travaillions. Mais, le tableau n’était pas tout noir. Après tout ce temps passé ensemble, nous sommes en effet devenus de très bons amis.
Je ne me souviens pas très bien combien de temps nous avons travaillé, mais, un jour, tout a été bouleversé sans sommation. Il se trouve que finalement, la puce sonore de la PS1 allait être intégrée à la PS2. Tout notre travail allait donc finir à la poubelle.
L’émulateur pour le processeur sonore que nous avions codé était devenait donc inutile, nous laissant sans but étant donné que la puce sonore de la PS1 ne remplacerait pas celle de la PS2. Nous ne pouvions que spéculer quant à ce qui nous attendait pour la suite comme, par exemple, coder des vecteurs de test pour le nouveau processeur sonore. Cependant, une grande surprise m’attendait quant à ma prochaine tâche.
Pour être précis, on m’a chargé d’émuler le processeur graphique de la PS1. C’est une demande qui m’a stupéfait. Quelqu’un d’autre devait déjà s’en charger et lorsque je me suis renseigné sur le sujet, on m’a répondu que cette personne quittait l’entreprise et que c’était mon rôle de reprendre cette tâche, sans poser de questions. Inutile de le dire, mais après avoir travaillé du côté sonore jusqu’à cet instant, passer au côté graphique était un sacré changement. Mais cela n’a eu que peu d’importance puisque je n’avais pas vraiment mon mot à dire. Que je le veuille ou non, c’était ma nouvelle affectation aussi perturbante qu’elle puisse être.
Ce n’est pas pour autant que je pensais qu’il s’agissait d’une tâche impossible à réaliser. Dans mon esprit, je vois les émulateurs comme des sortes de convertisseurs qui reçoivent des requêtes d’anciens processeurs et les traduisent pour que les nouveaux processeurs ciblés les comprennent et les exécutent. En ce sens, même si les matériels sonore et graphique ont leurs différences, au final, ils servent tous deux à envoyer des requêtes. Tout ce qu’un émulateur fait, c’est changer la forme et le flux de ces requêtes. Tant que l’émulateur est complètement testé, il devrait fonctionner, bien que ce soit, en pratique, la partie la plus compliquée.
Lorsque j’ai hérité du travail sur l’émulation du GPU (processeur graphique), mon prédécesseur avait heureusement posé des bases solides, et je ne devais donc pas débuter de zéro. Ma première tâche était donc de me mettre à niveau sur les spécificités du GPU de la PS1 et de la PS2. Ensuite, comme j’étais concentré sur la réécriture du programme des requêtes du GPU de la PS1, je me suis chargé d’implémenter des fonctions qui manquaient à l’appel.
Le tout premier jeu PS1 qui a démarré dans l’émulateur PS2 était Ridge Racer. En tant que titre de lancement de la PS1, cela m’a paru très profond qu’il ait les honneurs d’être retenu pour tester notre travail parmi tous les jeux de la ludothèque de la console. Alors que je mettais en marche la nouvelle console, j’ai beaucoup réfléchi à cette signification car c’était un nouveau départ pour ce titre cette fois sur PS2.
Cela étant dit, les premiers résultats étaient loin d’être parfaits, pour être très, très gentil. Par exemple, la reine de la course qui apparaît au début de chaque course ressemblait plus à une mosaïque qu’à un sprite à proprement parler. De plus, après avoir complété un tour, l’écran virait au rose. Mais j’étais tout de même content de voir que le jeu fonctionnait un tant soit peu correctement. Même si le seul élément émulé était le GPU, c’est à ce moment précis que j’ai su qu’il était possible de rendre la PS2 rétrocompatible avec la PS1 avec ce niveau d’émulation logicielle.
Tôt le matin du 2 mars 1999, je me tenais debout derrière le rideau de scène du Forum International de Tokyo, où la PlayStation 2 allait être officiellement dévoilée au monde entier plus tard dans la journée lors du PlayStation Meeting 1999. Mon rôle était de faire une démonstration en live de la rétrocompatibilité de la console avec la PS1 une fois cette fonctionnalité annoncée durant la présentation.
J’étais en standby depuis la nuit précédente afin de me préparer pour l’événement. Plusieurs mois s’étaient écoulés depuis que Ridge Racer avait démarré pour la première fois et j’avais fait de gros progrès sur l’émulateur du GPU. De nombreux jeux PS1 fonctionnaient désormais sans problèmes, le meilleur du lot étant Crash Bandicoot: Warped. C’est pour cette raison qu’il a été retenu pour faire la démonstration de la rétrocompatibilité de la PS2. Il n’y avait qu’un problème: il arrivait au jeu de bloquer par moment.
Cela va sans dire, nous aurions de graves ennuis si le jeu bloquait au beau milieu de la démo face à un public aussi nombreux. Malheureusement, je n’avais pas réussi à déterminer la cause de ces bloquages. Tout ce que j’avais pu identifier était que tant que Crash était en mouvement, le jeu restait stable pour une raison que j’ignorais. Tout en sachant cela, je suis resté éveillé toute la nuit en jouant sans fin sur une PS2 de développement. Heureusement, je n’étais pas seul dans cette démarche. J’avais en effet un collègue qui m’aidait à parcourir le jeu. La diffusion de notre gameplay était montée de telle manière qu’elle pouvait être projetée sur le grand écran de la scène de la conférence sur simple pression d’un interrupteur. Comme vous pouvez vous en douter, je me suis amusé avec cet interrupteur comme un enfant. Quant à savoir pourquoi nous ne pouvions pas jouer seulement le matin de la présentation, c’est parce qu’il y avait une possibilité que l’émulateur ne charge pas du tout. Nous n’aurions ainsi plus assez de temps pour identifier le problème et le réparer. Aussi surprenant que cela puisse paraitre, il était donc plus simple et plus sûr en termes logistiques de laisser la machine fonctionner toute la nuit une fois qu’elle avait démarré.
Heureusement, nous n’avons eu aucun incident cette nuit là. Alors que le grand moment approchait, la console était toujours opérationnelle. Dire que cet événement était important relève du doux euphémisme. Le PDG de Sony lui-même, Nobuyuki Idei, était présent dans la salle pour nous offrir son soutien. Des démos techniques ont démontré la puissance de l’Emotion Engine et du Graphics Synthesizer de la PS2. Depuis les coulisses, je ne voyais pas très bien ce qui se passait mais je pouvais dire que le public était emballé. Tout se déroulait comme prévu. Puis, au moment convenu, il était temps de révéler la rétrocompatibilité de la machine.
Croyez-le ou non, je ne me souviens honnêtement de plus grand chose de ce moment. Durant la démo de Crash Bandicoot, l’idée était que je joue normalement, sautant par dessus les obstacles et continuant à progresser toujours plus loin dans le niveau. Mais lorsque le moment est arrivé, j’ai vraiment eu du mal et je n’arrivais pas à passer un certain obstacle du niveau. À cet instant, c’est le trou noir complet. Je ne peux pas vous dire si j’ai finalement réussi à m’en sortir ou non.
De toute évidence, il semble que les choses se soient déroulées comme prévues puisque l’annonce a rencontré une pluie d’applaudissements malgré ma piètre performance. Quoi qu’il en soit, l’événement a été un franc succès.
La PlayStation 2 est finalement sortie au Japon le 4 mars 2000. Mon travail sur l’émulateur PS1 était essentiellement terminé aux alentours du Nouvel An, si je ne m’abuse. Au final, il n’y avait qu’une poignée de jeux qui ne fonctionnait pas correctement. C’est pour cela que nous avions compilé un liste noire de jeux PS1 auxquels les utilisateurs ne pourraient pas jouer sur leur console.
Le lancement japonais a ensuite laissé place aux lancements en Amérique du Nord et en Europe avec naturellement un émulateur PS1 fonctionnel pour leurs jeux respectifs. Juste avant ces sorties, je me suis rendu aux sièges américain et européen pour aider lors de la phase de debug. C’était la première fois que je me rendais à l’étranger. Au final, la PS2 n’était pas 100% rétrocompatible avec le catalogue de la PS1 mais presque tous les jeux fonctionnaient. Lorsque j’y repense désormais, je me dis que c’était probablement le travail le plus important de ma carrière juste avant mon travail pour les meilleurs casinos en ligne canadiens.
Ken Kutaragi avait placé la barre très haut pour nous, son équipe, nous disant de toujours savoir si la qualité de notre travail était la meilleure que nous puissions fournir. Lorsque je pense à ce que j’ai réalisé dans ma vie qui rencontre ce critère, la première chose qui me vient à l’esprit est le travail que j’ai fait sur la rétrocompatibilité PS1. J’en suis extrêmement fier.
Pour être très clair, je n’aurai pas pu réaliser tout cela tout seul ou sans le soutien d’un tas de collègues qui m’ont aidé au fur et à mesure que le projet avançait. Au final, si je ne l’avais pas fait, quelqu’un d’autre l’aurait fait. Quoi qu’il en soit, que j’arrive à terminer un projet aussi imposant me rend très fier. Je ne peux qu’espérer avoir l’opportunité de réaliser quelque chose de similaire de mon vivant.