Projet de rétro-ingénierie du jeu DOS F-15 Strike Eagle II : appel à des pilotes d’essai DOS
(neuviemeporte.github.io)- Le projet de rétro-ingénierie du binaire original du jeu de 1989 F-15 Strike Eagle II pour en reconstituer le code source en C est entré dans une phase de tests en conditions réelles
- Le code et les données de tous les exécutables, y compris
egameetend, ont été portés en C, et la majeure partie du code auparavant uniquement en assembleur dispose désormais d’une implémentation de remplacement en C - La dernière version
v0.9.1permet de remplacer les exécutables originaux de la version451.03du jeu et de l’extension Desert Storm afin d’effectuer les tests - Les nouveaux exécutables ne passent pas par l’écran de configuration et supposent un environnement MCGA/VGA, sans son et sans joystick, mais le briefing de mission, le vol et le débriefing doivent fonctionner
- Comme l’objectif est une reconstitution bug-for-bug préservant jusqu’aux bogues de l’original, les comportements également présents dans la version d’origine sont exclus du périmètre actuel des rapports de bug
État d’avancement du projet de reconstitution en C
- La reconstitution de F-15 Strike Eagle II est un projet amateur consistant à rétro-ingénierer le binaire original pour recréer le code source en C du jeu de 1989
- Il y a encore un peu plus d’un mois, il semblait qu’il faudrait plusieurs années supplémentaires pour porter en C le deuxième exécutable,
egame, tandis que le troisième,end, restait aussi à traiter - Le projet a maintenant atteint les étapes suivantes
- Reconstitution du code C de tous les exécutables terminée
- Toutes les données déplacées de l’assembleur vers le C
- Rédaction d’implémentations de remplacement en C fonctionnellement équivalentes pour la majeure partie du code auparavant réservé à l’assembleur
- Attribution de noms explicites à la plupart des routines et structures de données
- Examen prochain d’une bifurcation du dépôt pour le projet de portage
- Des outils permettent de vérifier si les opcodes reconstitués sont fidèles à l’original, mais ils ne détectent pas forcément tous les problèmes liés à la disposition des données
- Il ne s’agit plus seulement de vérifier la correspondance des opcodes : il faut désormais maintenir un jeu réellement exécutable, d’où le besoin de tests externes
Comment tester et quels problèmes signaler
- La version à tester est la dernière release v0.9.1
- Il suffit de placer les nouveaux exécutables dans le dossier du jeu contenant la version
451.03d’origine et l’extension Desert Storm, afin de remplacer les exécutables d’origine- Une sauvegarde est nécessaire avant remplacement
- Il peut être nécessaire de supprimer le
f15.comd’origine afin d’éviter que ce soit lui qui soit lancé à la place du nouveauf15.exe
- Les nouveaux exécutables n’ouvrent pas l’écran de configuration
- Ils supposent un affichage MCGA/VGA
- Pas de son
- Pas de joystick
- En cas de problème pendant les tests, il est possible de le signaler via les issues GitHub
- Plantages
- Artefacts graphiques
- Entrées clavier non reconnues
- Joindre si nécessaire une capture d’écran prise dans dosbox avec
Ctrl+F5 - Indiquer les actions effectuées avant l’apparition du problème aide à la reproduction et à la correction
- Ce projet vise une reconstitution bug-for-bug : les comportements présents dans le jeu original doivent donc être conservés
- L’original présente par exemple des disparitions d’objets 3D, ou encore un bug où l’avion tombe vers le ciel lorsqu’il est à l’envers et à court de carburant
- Il est préférable de vérifier avant signalement si le même problème se produit aussi dans la version d’origine
1 commentaires
Commentaires sur Hacker News
Il existe une version DOS jouable
La première étape a été de rétroconcevoir l’ensemble en assembleur, et la deuxième consiste à remplacer l’assembleur par du code C compilé identique au binaire. Ce travail continuera sous DOS jusqu’à ce qu’il ne reste plus de code assembleur, puis les portages Linux et Windows commenceront
La rétroconception a tendance à introduire de nouveaux bugs, et il n’est pas facile de trouver tous les bugs dans un code rétroconçu aussi ancien, mais jusqu’ici tout semble fonctionner
Si vous avez la version F-15 451.03 et Dosbox ou un vrai DOS, merci d’essayer de trouver les bugs encore ouverts
La dernière version DOS peut être récupérée ici : https://github.com/neuviemeporte/f15se2-re/releases
Les fichiers
f15_se2-*.zipcontiennent des exécutables de remplacement pour le jeu DOSAir Force needs YOU!
Cela dit, j’ai un tout petit reproche très personnel qui va donner aux autres armes l’occasion de ressortir à quel point j’aime les chaises
Air Force s’écrit en deux mots
Je ne pense pas qu’il faille trop se mettre la pression pour un port Linux. Le support des émulateurs est tellement bon et répandu que, si ça tourne dessus, on peut déjà considérer ça comme un succès
J’utilise Lutris(https://lutris.net/) parce que c’est pratique
Mais vous avez l’air d’aimer le bas niveau, donc c’est peut-être une quête en soi, plus que simplement jouer à un chouette jeu rétro
En revanche, je me demande si tout cela est globalement acceptable d’un point de vue juridique. J’aimerais bien avoir votre avis là-dessus
Question de débutant. J’espère que ça ne sonnera pas négativement
C’est formidable de consacrer du temps à faire fonctionner de vieux jeux, mais je me demande pourquoi décompiler un jeu qu’on peut déjà émuler avec DOSbox ou autre. Pour un jeu aussi ancien, ça ne tourne pas déjà très bien sur du matériel très modeste ?
Avec le code source, on peut ajouter des fonctionnalités entières, le porter sur Windows 10, implémenter la 4K HDR, de nouvelles textures, de nouveaux modèles, de nouvelles missions. Il n’y a pratiquement plus de limite
Et puis il est vraiment difficile d’analyser un jeu en ne regardant que des instructions assembleur avec des offsets de données codés en dur. En C, on peut lire directement le comportement ou ajouter du code d’instrumentation et de débogage pour le comprendre
Je voulais documenter les formats de fichiers, fouiller les données pour retrouver des médias inutilisés, identifier et corriger de gros bugs, créer des outils de modding, et comprendre par quelles techniques avait été fabriqué quelque chose qui m’avait marqué dans mon enfance
Je voulais aussi réduire les frictions pour les exécuter sur des systèmes modernes, et permettre des améliorations optionnelles comme une résolution plus élevée ou le remplacement des textures
Je n’ai finalement pas eu la patience d’aller jusqu’au bout, mais je me dis qu’aujourd’hui ce serait peut-être possible
En plus, ces jeux étaient souvent conçus pour fonctionner avec différents matériels graphiques et audio, donc les pilotes étaient en pratique compilés dans le jeu lui-même
[0] https://github.com/keirf/greaseweazle
J’y ai énormément joué quand j’étais enfant. Je jouais aussi à F-19 Stealth Fighter et F-117A Nighthawk Stealth Fighter, et c’est aujourd’hui que j’apprends pour la première fois que ces deux jeux sont sortis respectivement avant et après celui-ci. J’ai aussi un peu joué à F-14 Tomcat
Si j’ai bien compris, il faut les fichiers du jeu original pour le lancer. Du coup, je vais sans doute plutôt lire le journal de développement que repiloter cet avion
Je me souviens l’avoir acheté chez Electronics Boutique à la fin des années 1980 et y avoir joué sur le Packard Bell 286 de la maison. La protection contre la copie consistait à retrouver et identifier des avions dans le manuel, si bien qu’au final j’ai mémorisé tous les avions présents dans le jeu
J’ai même acheté un joystick Gravis Analog pour y jouer, et j’ai encore l’overlay du clavier
J’aimerais vraiment voir un reboot moderne de ce jeu
J’ai passé un temps fou au téléphone fixe avec un ami pour faire correspondre les réglages du modem, le faire raccrocher puis rappeler pour lancer la partie, puis ça coupait encore, et il fallait rappeler pour comprendre ce qui s’était passé
Quand on a enfin réussi à le faire fonctionner, on y a joué si souvent que la mère de mon ami a interdit les parties au modem parce qu’on monopolisait l’unique ligne téléphonique pendant des heures
J’aimerais retrouver un multijoueur similaire dans d’autres simulateurs de vol ou de l’espace, et faire revivre ce jeu aussi pour essayer de piéger un ami avec un peu de nostalgie
Porter des jeux est devenu absurdement facile de nos jours
https://robin.tooclever.org a pris moins d’une journée en temps d’API
Je me demande si l’IA est bien adaptée pour inférer la structure d’un projet décompilé quand il n’y a pas de noms de symboles
Ce n’est pas mon domaine, mais j’ai été surpris de voir à quel point l’IA arrivait à comprendre l’intention de la structure d’un JavaScript sans source maps
Dans certains cas, elle peut même comprendre directement un flux de contrôle fortement obfusqué, sans outils
L’histoire est maintenant sur YouTube : https://youtu.be/aIPKkOpIiF8
J’ai un ami qui pilotait des F15, alors je lui ai envoyé ça
Ces communautés autour de vieux jeux accomplissent des choses remarquables pour garantir les quatre libertés sur leurs titres favoris, et c’est vraiment inspirant
Je n’ai jamais joué à celui-ci, mais j’ai joué à Jane's F/A-18, et c’était un excellent jeu
J’ai passé énormément de temps à accumuler une carte Doppler en vol pour l’utiliser lors des tirs de SLAM
C’était un excellent simulateur, tout comme Tornado de Digital Integrations, et Tornado a vraiment besoin d’un reboot