1 Punkte von GN⁺ 4 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • Das Projekt zur Rekonstruktion des C-Quellcodes des Spiels F-15 Strike Eagle II von 1989 durch Reverse Engineering der Original-Binärdateien ist in die Phase echter Spieltests eingetreten
  • Code und Daten aller ausführbaren Dateien, einschließlich egame und end, wurden nach C übertragen, und für den Großteil des rein assemblerbasierten Codes gibt es nun C-Ersatzimplementierungen
  • Das aktuelle Release v0.9.1 kann in der Originalspielversion 451.03 und im Desert Storm-Erweiterungspaket die Original-Executables zum Testen ersetzen
  • Die neuen Executables überspringen den Konfigurationsbildschirm und setzen MCGA/VGA, keinen Sound und keinen Joystick voraus, aber Missionsbriefing, Flug und Debriefing sollten funktionieren
  • Da das Ziel eine Bug-für-Bug-Rekonstruktion ist, die sogar dieselben Fehler wie das Original bewahrt, sind Verhaltensweisen, die auch im Original vorhanden sind, derzeit kein Gegenstand von Bug-Reports

Fortschritt des C-Rekonstruktionsprojekts

  • Die Rekonstruktion von F-15 Strike Eagle II ist ein Hobbyprojekt, das durch Reverse Engineering der Original-Binärdateien den C-Quellcode des Spiels von 1989 neu erstellt
  • Noch vor etwas mehr als einem Monat sah es so aus, als würde die Übertragung der zweiten Executable egame nach C noch mehrere Jahre dauern, und auch die dritte Executable end stand noch aus
  • Inzwischen wurde Folgendes erreicht
    • Rekonstruktion des C-Codes für alle Executables abgeschlossen
    • Alle Daten von Assembler nach C verschoben
    • Für den Großteil des rein assemblerbasierten Codes funktional gleichwertige C-Ersatzimplementierungen geschrieben
    • Den meisten Routinen und Datenstrukturen aussagekräftige Namen gegeben
    • Prüfung einer baldigen Abspaltung eines Repository-Zweigs für das Portierungsprojekt
  • Ob die rekonstruierten Opcodes dem Original treu sind, wird mit Tools überprüft, aber Fehler im Zusammenhang mit dem Datenlayout werden dabei nicht vollständig erfasst
  • Da es nun nicht mehr nur um die Prüfung der Opcode-Übereinstimmung geht, sondern darum, ein tatsächlich laufendes Spiel zu erhalten, werden externe Tests benötigt

Testmethode und welche Probleme gemeldet werden sollen

  • Getestet werden soll das aktuelle Release v0.9.1
  • Dazu werden die neuen Executables in den Spielordner mit der Originalspielversion 451.03 und dem Desert Storm-Erweiterungspaket gelegt und die Original-Executables ersetzt
    • Vor dem Ersetzen ist ein Backup erforderlich
    • Möglicherweise muss das originale f15.com entfernt werden, damit nicht statt des neuen f15.exe das originale f15.com gestartet wird
  • Die neuen Executables öffnen nicht den Konfigurationsbildschirm
    • setzen MCGA/VGA-Anzeige voraus
    • kein Sound
    • kein Joystick
  • Wenn beim Testen Probleme auftreten, können sie als GitHub-Issue gemeldet werden
    • Abstürze
    • Grafikfehler
    • nicht funktionierende Tasteneingaben
    • falls nötig einen in dosbox mit Ctrl+F5 aufgenommenen Screenshot anhängen
    • für Reproduktion und Behebung hilft es, zu beschreiben, welche Aktionen vor dem Auftreten des Problems ausgeführt wurden
  • Dieses Projekt zielt auf eine Bug-für-Bug-Rekonstruktion, daher müssen Verhaltensweisen, die auch im Originalspiel vorhanden sind, beibehalten werden
    • Im Original gibt es etwa das Problem, dass 3D-Objekte verschwinden, oder dass das Flugzeug bei fehlendem Treibstoff im umgekehrten Zustand nach oben in den Himmel fällt
    • Vor einer Meldung sollte man besser prüfen, ob dasselbe Problem auch im Original auftritt

1 Kommentare

 
GN⁺ 4 시간 전
Hacker-News-Kommentare
  • Es gibt eine spielbare DOS-Version
    Der erste Schritt war, alles vollständig in Assembler zurückzuentwickeln, und der zweite Schritt bestand darin, den Assembler in kompilierten C-Code umzuwandeln, der binär identisch ist. Damit mache ich unter DOS weiter, bis kein Assembler-Code mehr übrig ist, und beginne danach mit den Portierungen auf Linux und Windows
    Reverse Engineering zieht leicht neue Bugs nach sich, und es ist nicht einfach, in so altem reverse-engineertem Code alle Bugs zu finden, aber bisher scheint alles zu funktionieren
    Wenn du Version F-15 451.03 hast und Dosbox oder echtes DOS zur Verfügung steht, suche bitte nach offenen Bugs
    Die neueste DOS-Version gibt es hier: https://github.com/neuviemeporte/f15se2-re/releases
    Die Dateien f15_se2-*.zip enthalten Ersatz-Executables für das DOS-Spiel
    Air Force needs YOU!

    • Ich bin Veteran der USAF. Ich bin mit F-15 Strike Eagle II aufgewachsen, und leider ist meine Kopie schon vor langer Zeit kaputtgegangen. Dieses Projekt zu sehen, freut mich wirklich
      Ich habe allerdings einen sehr kleinen, persönlichen Einwand, der andere Teilstreitkräfte dazu bringen könnte, damit aufzuziehen, wie sehr ich Stühle liebe
      Air Force sind zwei Wörter
    • Gut gemacht
      Wegen eines Linux-Ports muss man sich vermutlich nicht zu viel Druck machen. Emulator-Support ist inzwischen so gut und so weit verbreitet, dass es schon als Erfolg gelten kann, wenn es dort läuft
      Ich nutze Lutris(https://lutris.net/), weil es für mich bequem ist
      Du wirkst aber auch wie jemand, der Low-Level-Kram mag, also ist das vielleicht selbst eine Quest und nicht nur Mittel zum Zweck, ein cooles Retrospiel zu spielen
    • Ich reverse engineere gerade selbst ein paar Spiele. Heutzutage ist das dank KI ziemlich einfach geworden
      Ich frage mich allerdings, ob das rechtlich insgesamt in Ordnung ist. Mich würde deine Meinung dazu interessieren
  • Anfängerfrage. Ich hoffe, das klingt nicht negativ
    Es ist natürlich toll, Zeit zu investieren, damit alte Spiele laufen, aber ich frage mich, warum man Spiele dekompiliert, die sich mit DOSbox oder Ähnlichem emulieren lassen. Sollten so alte Spiele nicht auch auf sehr schwacher Hardware problemlos laufen?

    • Es geht im Kern nicht darum, das Spiel auszuführen, sondern es modifizierbar zu machen. Ein Spiel in Binärform zu patchen, ist absurd schwierig, und alles über einfache Bugfixes hinaus ist fast unmöglich
      Mit dem Source Code kann man ganze Features hinzufügen, nach Windows 10 portieren oder sogar 4K HDR, Texturen, neue Modelle und neue Missionen umsetzen. Die Grenzen verschwinden praktisch
      Außerdem ist es wirklich schwer, ein Spiel nur anhand von Assembler-Instruktionen mit hartkodierten Datenoffsets zu analysieren. In C kann man das Verhalten direkt lesen oder Instrumentierungs- und Debug-Code einbauen, um es zu verstehen
    • Als ich vor ein paar Jahren versucht habe, ein Spiel aus der DOS-Ära zurückzuentwickeln, gab es dafür mehrere Gründe
      Ich wollte Dateiformate dokumentieren, in den Daten nach ungenutzten Medien suchen, schwere Bugs identifizieren und beheben, Modding-Tools bauen und verstehen, mit welchen Techniken etwas gemacht wurde, das mir aus der Kindheit im Gedächtnis geblieben ist
      Ich wollte auch die Reibung beim Ausführen auf modernen Systemen verringern und optionale Verbesserungen wie höhere Auflösungen oder den Austausch von Texturen ermöglichen
      Am Ende hatte ich nicht die Geduld, es fertigzustellen, aber inzwischen denke ich, dass es heute vielleicht machbar wäre
    • Viele floppybasierte Spiele hatten Kopierschutzmuster auf der Diskette, die undokumentiertes Verhalten der damaligen Laufwerke ausnutzten. Deshalb braucht man Werkzeuge wie Greaseweazle, um die vollständige magnetische Flux-Map archivierter Disketten zu rekonstruieren
      Außerdem wurden solche Spiele oft so gebaut, dass sie auf verschiedenster Grafik- und Sound-Hardware liefen, wodurch die Treiber faktisch direkt ins Spiel einkompiliert waren
      [0] https://github.com/keirf/greaseweazle
  • Das habe ich als Kind wirklich viel gespielt. Dazu auch F-19 Stealth Fighter und F-117A Nighthawk Stealth Fighter, und heute habe ich zum ersten Mal erfahren, dass diese beiden Spiele davor bzw. danach erschienen sind. F-14 Tomcat habe ich auch ein bisschen gespielt
    Wenn ich es richtig gelesen habe, braucht man zum Ausführen offenbar die originalen Spieldateien. Also werde ich wohl eher das Entwicklungslog lesen, statt dieses Flugzeug noch einmal zu fliegen

    • F-19 ist ein großartiges Spiel und einer meiner liebsten Titel von Sid Meier
      Ich erinnere mich noch, wie ich es Ende der 1980er bei Electronics Boutique gekauft und auf dem Packard Bell 286 zu Hause gespielt habe. Der Kopierschutz verlangte, im Handbuch Flugzeuge zu finden und zu identifizieren, und dadurch habe ich mir am Ende alle Flugzeuge im Spiel eingeprägt
      Ich habe mir sogar einen Gravis-Analog-Joystick zum Spielen gekauft, und das Tastatur-Overlay habe ich bis heute
      Ich würde wirklich gern einen modernen Reboot dieses Spiels sehen
    • War das das Spiel, das man mit einem Freund im Koop-Modus mit Rollen als Vordersitz/Hintersitz spielen konnte, oder war das III?
      Ich habe ewig mit meinem Freund über das Festnetz telefoniert, um die Modem-Einstellungen abzugleichen, ihn dann wieder anrufen lassen, das Spiel gestartet, dann wieder getrennt, noch mal telefoniert, um herauszufinden, was diesmal schiefgelaufen war, und so weiter
      Als es schließlich funktionierte, haben wir es so ununterbrochen gespielt, dass die Mutter meines Freundes Modem-Spiele verboten hat, weil wir stundenlang die einzige Telefonleitung blockierten
      Ich würde gern in anderen Flug- oder Weltraumsimulatoren wieder ähnlichen Multiplayer finden und dieses Spiel auch wieder zum Laufen bringen, um meinen Freund mit Nostalgie zu ködern
    • Der Entwicklungsblog gehört zu den besten Retro-Reverse-Engineering-Tagebüchern überhaupt. Liest sich wirklich gut
    • Sind solche Namen nicht markenrechtlich geschützt? Lockheed könnte die Rechte vielleicht als Nebeneinnahme lizenzieren
  • Spiele zu portieren ist heutzutage absurd einfach geworden
    https://robin.tooclever.org hat weniger als einen Tag API-Zeit gebraucht

    • Cool. Gibt es ein Verzeichnis für so portierte Spiele oder Open-Source-Ports?
  • Ich frage mich, ob KI gut darin ist, die Struktur eines dekompilierten Projekts ohne Symbolnamen zu erschließen
    Das ist nicht mein Fachgebiet, aber ich war überrascht, wie gut KI die Absicht hinter JavaScript-Strukturen ohne Source Maps versteht

    • KI ist übermenschlich gut darin, Assembler zu lesen und zu verstehen. Ob dekompiliert oder mit Symbolen ist ihr ziemlich egal; ohne Symbole wird sie nur etwas langsamer
      In manchen Fällen kann sie sogar stark verschleierten Kontrollfluss direkt verstehen, ganz ohne Tools
    • Ja, sehr hilfreich
  • Dazu gibt es jetzt auch ein YouTube-Video: https://youtu.be/aIPKkOpIiF8

    • Das Video ist cool, aber die KI-Erzählstimme nervt
  • Ich habe einen Freund, der eine F15 geflogen ist, und ihm das hier geschickt

  • Diese Communities rund um alte Spiele leisten Erstaunliches, wenn es darum geht, sich für ihre Lieblingstitel die vier Freiheiten zu sichern, und das ist wirklich inspirierend

  • Das hier habe ich nie gespielt, aber Jane's F/A-18 schon, und das war ein großartiges Spiel

    • Und dann gab es noch Jane's USAF!
  • Ich habe viel Zeit damit verbracht, im Flug eine Doppler-Karte aufzubauen und sie für SLAM-Starts zu nutzen
    Zusammen mit Tornado von Digital Integrations war das ein großartiger Simulator, und Tornado braucht wirklich einen Reboot