L’erreur du disque maître de Space Quest II
(lanceewing.github.io)L’erreur du disque maître de Space Quest II
- 22 mai 2024
- L’apparence de ce disque n’a rien de particulier, mais les données qu’il contient ont quelque chose de très spécial que Sierra On-Line ne connaissait probablement pas et n’aurait certainement pas voulu inclure.
- Si vous avez une disquette 720 Ko de la collection de jeux d’aventure Sierra, vous n’êtes pas seul.
- Les versions 2.0D et 2.0F de Space Quest II n’étaient pas rares.
Une simple liste de répertoire
- En regardant la liste des fichiers du disque, rien ne semble particulier.
- La liste de la version 2.0D ne diffère pas de celle des autres disques de jeux Sierra.
- Les horodatages montrent que les principaux fichiers de données du jeu (
PICDIR,LOGDIR,VIEWDIR,SNDDIR,VOL.0,VOL.1) ont été créés le 14 mars 1988. - Les fichiers
.OVLont été créés le 15 mars 1988, et le code de l’interpréteur AGI le 18 mars 1988. - L’élément inhabituel dans la liste du répertoire est que l’espace « inutilisé » du disque est plus important que l’espace utilisé. 302 918 octets sont utilisés, et 402 432 octets sont indiqués comme inutilisés.
Utilisation d’un éditeur hexadécimal
- Pour voir plus précisément ce qu’il y a sur le disque, il faut un outil appelé éditeur hexadécimal.
- Dans les années 1980, Norton Utilities était souvent utilisé, et aujourd’hui HxD Hex Editor, écrit par Maël Hörz, est une excellente alternative.
- Sur une disquette DOS fraîchement formatée, les secteurs inutilisés devraient être remplis avec la valeur d’octet
0xF6. - Le disque 2 de Space Quest II version 2.0D correspond à ce cas, mais le disque 1 ne contient aucun secteur rempli avec des octets
0xF6. - Les secteurs inutilisés du disque 1 sont remplis de ce qui ressemble à du code source C.
- Cela suggère fortement que le disque maître a été utilisé à une autre fin et n’a pas été correctement formaté après suppression des fichiers.
Code source de l’interpréteur AGI
- En observant les données dans l’éditeur hexadécimal, cela ressemble à du texte.
- En copiant le texte ASCII dans un éditeur de texte, cela ressemble à du code source C.
- Deux fonctions y sont définies, l’une nommée
DisplayStatusLine, l’autreStatusLineOn. - La fonction
DisplayStatusLinesemble afficher une ligne de texte montrant le score actuel et l’état du son. - Ce code source fait partie de l’interpréteur AGI.
- En faisant défiler davantage de secteurs inutilisés dans l’éditeur hexadécimal, on trouve une grande quantité de code source.
- Ce code source est stocké dans des secteurs consécutifs, ce qui le rend facile à extraire.
- Il est réparti en 93 fichiers au total : 75 fichiers source C, 16 fichiers source en langage assembleur et 2 fichiers DOS BAT.
- Il représente plus de 15 000 lignes de code au total, et la plupart des fichiers sont complets.
- Ce disque du jeu Space Quest 2 contient environ 70 % du code source de l’interpréteur AGI de Sierra On-Line.
Historique des modifications des fichiers source
- Certains fichiers source contiennent un historique des modifications dans leurs commentaires d’en-tête.
- Par exemple, le commentaire d’en-tête du fichier source
ANIMATE.Cinclut le nom du fichier, une description de sa fonction, le nom du compilateur (MWC) et l’historique des modifications. - Les programmeurs s’identifiaient à l’aide de leurs initiales.
- JAS correspond à Jeff Stephenson, principal programmeur ayant travaillé sur le code de l’interpréteur AGI, et DCI à Chris Iden.
- Robert Heitman est également mentionné, mais son travail était principalement centré sur les outils graphiques.
Carte mémoire de AGI.EXE
- Le disque 1 de SQ2 2.0D en 720 Ko contient aussi la carte mémoire de l’exécutable
AGI.EXE. - La carte mémoire fournit la liste des modules et des fichiers source qui composent l’interpréteur AGI.
- 98 fichiers source y sont mentionnés au total, dont 71 sont inclus intégralement sur le disque SQ2.
- Cela signifie qu’environ 70 % du code source de l’interpréteur AGI est présent sur le disque SQ2.
La propriété intellectuelle de Sierra
- En 1984, Sierra On-Line avait du mal à maintenir son activité.
- Le succès de King’s Quest a joué un rôle majeur dans le renversement de sa situation.
- Le système de jeux d’aventure AGI et les jeux créés grâce à lui constituaient la principale source de revenus de Sierra On-Line.
- Le code source de l’interpréteur AGI représentait une propriété intellectuelle centrale pour Sierra.
- Le fait que 70 % de ce code source aient été copiés en masse et envoyés aux clients constituait une énorme erreur.
Comment cela a-t-il pu arriver ?
- Lorsqu’une nouvelle version du jeu était prête, un disque maître de « copie de production » était créé pour être utilisé avec la machine de duplication de disques FormMaster.
- Cette machine copiait chaque octet du disque.
- Les disques 1 des versions 2.0D et 2.0F de Space Quest II ont été utilisés sans avoir été formatés.
- Résultat : des dizaines de milliers de disques SQ2 se sont retrouvés avec 70 % du code source de l’interpréteur AGI.
Une crise évitée de justesse
- Il s’agissait presque certainement d’une erreur involontaire.
- Ni Sierra, ni ses concurrents, ni ses clients ne s’en sont aperçus.
- La découverte a été faite pour la première fois en octobre 2016 par l’utilisateur en ligne NewRisingSun.
- Comme cela s’est produit à la fin de l’ère AGI, cela n’est pas devenu un problème majeur.
- C’est une histoire fascinante d’archéologie numérique qui permet de voir comment Sierra On-Line écrivait l’interpréteur AGI.
Pour les personnes intéressées, le code source extrait de l’interpréteur AGI a été téléversé dans un dépôt GitHub : https://github.com/lanceewing/agi
Découvrez AGILE, l’interpréteur AGI web. Cette implémentation a été guidée par le code source AGI d’origine.
L’avis de GN⁺
- La valeur de l’archéologie numérique : cet article montre l’importance de l’archéologie numérique. Les anciens logiciels et données ont une valeur historique et technique.
- La leçon d’une erreur de sécurité : cet incident souligne l’importance de la sécurité et de la gestion des données. Lorsqu’on traite des données sensibles, une vérification rigoureuse et un formatage correct sont toujours nécessaires.
- La preuve du progrès technique : le code source de l’interpréteur AGI montre les avancées techniques du développement de jeux dans les années 1980. Cela peut inspirer les développeurs d’aujourd’hui.
- La force de l’open source : le fait que le code source d’origine ait été rendu public offre aux développeurs actuels l’occasion de l’étudier et de l’utiliser dans de nouveaux projets.
- Le risque concurrentiel : si ce code source avait été découvert à l’époque par un concurrent, l’avantage compétitif de Sierra On-Line aurait pu être gravement compromis. Cela rappelle l’importance de protéger la propriété intellectuelle des entreprises.
1 commentaires
Avis Hacker News
Résumé des commentaires de Hacker News
Double Dragon II: The Revenge for DOS (1989)
DIR, mais pouvait être récupéré facilement.Reverse engineering d’une ROM de synthétiseur
Souvenirs d’enfance liés aux jeux
Les secrets du moteur AGI
Cartes mémoire et code source
HxD Hex Editor
La ROM d’Air Fortress
Artefacts de publication manuelle
Découverte de code source
Commentaires d’historique des modifications