Reverse-Engineering-Projekt des DOS-Spiels F-15 Strike Eagle II sucht DOS-Testpiloten
(neuviemeporte.github.io)- 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
egameundend, wurden nach C übertragen, und für den Großteil des rein assemblerbasierten Codes gibt es nun C-Ersatzimplementierungen - Das aktuelle Release
v0.9.1kann in der Originalspielversion451.03und 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
egamenach C noch mehrere Jahre dauern, und auch die dritte Executableendstand 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.03und dem Desert Storm-Erweiterungspaket gelegt und die Original-Executables ersetzt- Vor dem Ersetzen ist ein Backup erforderlich
- Möglicherweise muss das originale
f15.comentfernt werden, damit nicht statt des neuenf15.exedas originalef15.comgestartet 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+F5aufgenommenen 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
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-*.zipenthalten Ersatz-Executables für das DOS-SpielAir Force needs YOU!
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
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 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?
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
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
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
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
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
Spiele zu portieren ist heutzutage absurd einfach geworden
https://robin.tooclever.org hat weniger als einen Tag API-Zeit gebraucht
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
In manchen Fällen kann sie sogar stark verschleierten Kontrollfluss direkt verstehen, ganz ohne Tools
Dazu gibt es jetzt auch ein YouTube-Video: https://youtu.be/aIPKkOpIiF8
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
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