1 Punkte von GN⁺ 2025-12-16 | 1 Kommentare | Auf WhatsApp teilen
  • Das Flugzeugträger-Landungssystem von Top Gun für NES wurde per Reverse Engineering analysiert, und die exakten Bedingungen für eine erfolgreiche Landung wurden offengelegt
  • Für eine erfolgreiche Landung sind Höhe 100–299, Geschwindigkeit 238–337 und exakte Ausrichtung auf den Flugzeugträger erforderlich
  • Die Anzeige „Alt. 200 / Speed 288“ auf dem MFD im Spiel gibt tatsächlich den Mittelwert des erlaubten Bereichs an
  • Geschwindigkeit und Höhe werden im Speicher im Format BCD (Binary Coded Decimal) abgelegt, und die Prüffunktion läuft an einer bestimmten Adresse
  • Ein Beispiel für die Entschlüsselung der präzisen internen Logik eines alten Spiels, nützlich für die Analyse von Retrospielen und zum Lernen von Debugging

Grundbedingungen für die Landungsbewertung

  • Für eine erfolgreiche Landung sind Höhe 100–299, Geschwindigkeit 238–337 und eine exakte Ausrichtung auf den Flugzeugträger erforderlich
    • Alle drei Bedingungen werden am Ende der Landesequenz geprüft
  • Die Anzeige „Alt. 200 / Speed 288“ auf dem Spielbildschirm entspricht dem Mittelwert des tatsächlich zulässigen Bereichs und ist damit ein sinnvoller Zielwert für Spieler
  • Höhe und Geschwindigkeit werden über Throttle-Eingaben und Pitch-Winkel gesteuert, während die Ausrichtung ohne separate Anzeige nur durch die Warnung „Right! Right!“ zurückgemeldet wird

Speicherstruktur und interne Variablen

  • Wichtige Speicheradressen und ihre Inhalte
    • $40–$41: Geschwindigkeit (BSD-Format), erlaubter Bereich 238–337
    • $3D–$3E: Höhe (BSD-Format), erlaubter Bereich 100–299
    • $FD: Richtung (Heading), im Bereich -32 bis +32 ist 0–7 landefähig
    • $9E: Speichert das Ergebnis der Landungsprüfung, Wert 0 bedeutet Erfolg
  • Geschwindigkeit und Höhe werden als BCD (Binary Coded Decimal) gespeichert, um die Anzeige auf dem Bildschirm zu vereinfachen
    • Beispiel: 1234 wird als 0x1234 (dezimal 4660) gespeichert

Routine zur Landungsbewertung

  • Die Funktion an Adresse $B6EA prüft den Landungsstatus und schreibt das Ergebnis in $9E
  • Die Routine vergleicht Höhe, Geschwindigkeit und Richtung nacheinander; wenn eine Bedingung nicht erfüllt ist, wird jeweils ein anderer Codewert zurückgegeben
    • Beispiel: Bei zu großer Höhe oder zu hoher Geschwindigkeit wird Code 8 zurückgegeben, bei zu geringer Höhe oder zu niedriger Geschwindigkeit Code 4
  • Wenn alle Bedingungen erfüllt sind, wird mit LDX #00 der Erfolgsstatus gesetzt

Debugging und Cheat-Code

  • Mit dem Game-Genie-Code AEPETA wird jede Landung immer als erfolgreich gewertet
  • Dieser Code umgeht die eigentliche Prüfroutine und schreibt das Ergebnis erzwungen als Erfolg

Fazit

  • Das Landungssystem in Top Gun für NES basiert nicht nur auf einfacher Steuerung, sondern auf einer präzisen, zahlenbasierten Bewertungslogik
  • Durch Reverse Engineering lassen sich die interne Speicherstruktur und die bedingten Verzweigungen eines Retrospiels klar nachvollziehen
  • Als Beispiel für die Präzision klassischer Spieldesigns ist dies eine wertvolle Referenz für die Analyse und Rekonstruktion von Spiellogik

1 Kommentare

 
GN⁺ 2025-12-16
Hacker-News-Kommentare
  • Die Informationen, um das Flugzeug richtig zu landen, standen alle im Handbuch
    Die nötige Geschwindigkeit und Höhe waren kein Geheimnis, aber die meisten Kinder haben das Handbuch nicht gelesen
    Die eigentliche Schwierigkeit des Spiels lag an der halbwegs realistischen Physik-Engine. Mein älterer Bruder, der eine Flugschule besuchte, landete ganz leicht und zeigte mir dann auch, wie es geht
    Geschwindigkeit und Höhe musste man mit Schub und Nickwinkel steuern, also durfte man nicht einfach nur auf den Motor- oder Airbrake-Knopf drücken
    Der Tipp meines Bruders war, beim steilen Sinkflug die Nase leicht anzuheben und die Airbrake auszufahren, um die Geschwindigkeit zu verringern, weil man sonst nicht langsamer wird, und danach wieder auszurichten. Das Spiel hat das ziemlich genau modelliert

    • Dass die meisten Kinder das Handbuch nicht gelesen haben? Wenn ich ein neues Spiel gekauft habe, habe ich das Handbuch auf der Heimfahrt im Auto mehrfach gelesen. Wenn es ein Spiel von Toys“R”Us war, vielleicht sogar zwölfmal, bevor ich zu Hause ankam
    • Das Sprichwort beim Landen lautet: „Mit dem Schub die Höhe, mit dem Nickwinkel die Geschwindigkeit steuern.“ Die meisten machen es umgekehrt
    • Ich hatte das Handbuch auch und habe es als Kind wirklich gern gelesen. Trotzdem war die Flugzeugträgerlandung eine der schwersten Spielerfahrungen meines Lebens. Die Erfolgsquote lag bei vielleicht 1 %, und ich hatte absolut keine Ahnung, worin der Unterschied zwischen Erfolg und Misserfolg lag
    • Die Informationen standen nicht nur im Handbuch, sondern auch auf dem Bildschirm. Es fehlte nur der Toleranzbereich. Zu wissen, dass es ungefähr Spielraum von Höhe ±100 und Geschwindigkeit ±50 gibt, hilft enorm
    • Wenn man sich das Spiel von Freunden ausgeliehen oder gemietet hatte, gab es kein Handbuch. Ich weiß zwar nicht mehr, wie ich am Ende herausgefunden habe, wie man landet, aber sicher ist, dass die Landeanweisungen eher verwirrend waren
  • Dieser Blog ist schwer zu archivieren und zu durchsuchen
    Es gibt keine Links zu anderen Beiträgen, und außer diesem Post kommt man nirgends hin
    blag/posts und blag liefern 403-Fehler, und auf der Root-Seite gibt es nur ein Foto von einem Berg
    Es gibt auch keinen RSS-Feed. Keine Beschwerde, und wenn das Absicht ist, respektiere ich das

    • Laut Google-Suchergebnissen sind nur dieser Artikel und die Seite mit dem Bergfoto indexiert. Vermutlich ist das der erste Beitrag der Website
    • In unserem Firmennetzwerk (ZScaler) wird die Seite als Waffen-/Bomben-Kategorie eingestuft und blockiert. Ich konnte diesen Link nicht öffnen
  • Die Flugzeugträgerlandung war nicht schwer, aber die Luftbetankung war wirklich brutal. Ich habe sie nur ein paarmal geschafft
    Gameplay-Video

    • Die Hintergrundmusik in der Betankungsszene war großartig, aber im verlinkten Video fehlt sie. Ist das eine andere Version? In dieser Version ist sie enthalten
    • Schon beim Klicken auf den Link kam die Nostalgie zurück, und ich habe den Tab wieder geschlossen. Die Flugzeugträgerlandung war nervig, aber die Betankung war noch mal eine ganz andere Liga. Musste sofort an die Nächte bei Freunden mit NES und Pizza denken
    • Praktisch war, dass bei der Betankung auch gleich die Raketen wieder aufgefüllt wurden
    • Aber warum fliegt der Tanker mit 1.400 Meilen pro Stunde? Das ist ja fast Mach 2!
    • Ging mir genauso :) Trotzdem hat es Spaß gemacht, solche Versuche immer wieder zu machen
  • Ich muss sofort an die legendäre Zeile „This business will get out of control…“ denken

    • Ich habe diese Zeile in den letzten zwölf Jahren unzählige Male benutzt. YouTube-Clip
  • Dieses Spiel wurde auch in einem Angry Video Game Nerd-Video behandelt
    Passendes Video

    • In der Fortsetzung gibt es eine Szene, in der AVGN die Landung versucht. Technisch fast schon Demontagearbeit
      YouTube-Link
  • Ich habe Top Gun nicht gespielt, aber auf dem SNES mochte ich Turn and Burn: No Fly Zone sehr
    Es ist selbst heute noch erstaunlich, wie stark sich die Grafik von einer Generation zur nächsten verbessert hat

    • Beim Generationssprung in der Grafik finde ich den Unterschied zwischen Super Mario 64 (N64) und Resident Evil 4 (GameCube) am größten
      Der Wechsel von NES zu SNES war auf ähnlichem Niveau. Mit PS1→PS2→PS3 hatte sich die 3D-Ära etabliert, deshalb wurden die Veränderungen zunehmend schrittweiser
  • Alle reden darüber, wie schwer die Landung in Top Gun ist, aber das Andocken an den Satelliten in Captain Skyhawk ist viel schwerer
    Man muss andocken, während einem die Demo-Scene-Effekte von RARE um die Ohren fliegen

    • Der Trick ist ganz einfach: Beim Andocken nur vertikal bewegen
  • Zum Vergleich hat jemand ein Beispiel für Landungslogik in Python geteilt
    Je nach Höhe, Geschwindigkeit und Richtung gibt es dann Rückgaben wie TOO_SLOW_OR_TOO_LOW oder TOO_FAST_OR_TOO_HIGH

    • Könnte tatsächlich so ausgesehen haben. Ich frage mich, mit welchem LLM der Code erzeugt wurde
    • Aber auch wenn der Code zu weit nach rechts versetzt ist, gibt er TOO_SLOW_OR_TOO_LOW zurück. In der ursprünglichen Disassemblierung springt er zu too_far_right
  • Ich liebe solchen Simulator-Unfug
    In X‑Plane kann man sogar eine 737 auf einem Flugzeugträger landen. Man lädt nur Treibstoff für 30 Minuten ein, setzt die Klappen maximal aus und zieht kurz vor der Landung die Feststellbremse an

    • Vielleicht wäre das sogar in echt möglich. Die US Navy hat einmal eine C‑130 auf der USS Forrestal gelandet
      Natürlich braucht eine 737 laut offiziellen Werten deutlich mehr Landebahn, aber wenn der Träger gegen den Wind fährt, bekommt man mehr als 40 Knoten Gegenwind
  • Ich habe das Spiel als Kind gespielt, aber ich habe nie auf dem Flugzeugträger gelandet. Das war die Aufgabe der großen Brüder

    • Bei mir genauso. Ich mochte das Spiel wirklich, aber bei der Landung bin ich immer abgestürzt
      Eines Tages hieß es in der Nachmittagsbetreuung, ein Freund könne in diesem Spiel gut landen, also haben wir eine Kooperationsmission gestartet
      Ich habe die Kämpfe übernommen, er die Landungen, und zusammen haben wir Top Gun und The Second Mission in wenigen Stunden durchgespielt
      Es ist bis heute eine schöne Erinnerung als eines der wenigen NES-Spiele, die ich ohne Cheats oder Game Genie zusammen mit einem Freund geschafft habe