1 points par GN⁺ 4 시간 전 | 1 commentaires | Partager sur WhatsApp
  • 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 egame et end, 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.1 permet de remplacer les exécutables originaux de la version 451.03 du 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.03 d’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.com d’origine afin d’éviter que ce soit lui qui soit lancé à la place du nouveau f15.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

 
GN⁺ 4 시간 전
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-*.zip contiennent des exécutables de remplacement pour le jeu DOS
    Air Force needs YOU!

    • Je suis un vétéran de l’USAF. J’ai grandi avec F-15 Strike Eagle II et, malheureusement, mon exemplaire a rendu l’âme il y a longtemps. Ce projet me fait vraiment plaisir
      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
    • Beau travail
      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
    • Moi aussi, je suis en train de rétroconcevoir quelques jeux. De nos jours, c’est devenu assez facile grâce à l’IA
      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 ?

    • L’idée, ce n’est pas seulement d’exécuter le jeu, c’est de l’ouvrir pour pouvoir le modifier. Patcher un jeu sous forme binaire est absurdement difficile, et aller au-delà de simples corrections de bugs est presque impossible
      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
    • Quand j’ai essayé de rétroconcevoir des jeux de l’ère DOS il y a quelques années, il y avait plusieurs raisons
      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
    • Beaucoup de jeux sur disquette reposent sur des schémas de protection contre la copie exploitant des comportements non documentés des lecteurs de disquette de l’époque. Au point que des outils comme Greaseweazle sont nécessaires pour reconstituer la carte complète des flux magnétiques d’une disquette archivée
      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

    • F-19 est un excellent jeu, et l’un de mes titres Sid Meier préférés
      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
    • C’était bien ce jeu auquel on pouvait jouer en coop avec un ami, l’un au siège avant et l’autre au siège arrière, ou c’était le III ?
      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
    • Le blog de développement fait partie des meilleurs journaux de rétroconception rétro. C’est un vrai plaisir à lire
    • Ces noms ne sont-ils pas déposés comme marques ? On dirait que Lockheed pourrait peut-être vendre les droits comme revenu d’appoint
  • 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

    • Excellent. Existe-t-il un index de ce genre de jeux portés ou de ports open source ?
  • 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

    • L’IA est surhumaine pour lire et comprendre l’assembleur. Qu’il soit décompilé ou qu’il y ait des symboles, ça lui importe peu ; sans symboles, elle est juste un peu plus lente
      Dans certains cas, elle peut même comprendre directement un flux de contrôle fortement obfusqué, sans outils
    • Oui, c’est très utile
  • L’histoire est maintenant sur YouTube : https://youtu.be/aIPKkOpIiF8

    • La vidéo est chouette, mais la narration IA est agaçante
  • 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

    • Et il y avait aussi Jane's USAF !
  • 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