The real difficulty, not explored in this disassembly, is that the game has semi-realistic physics! My older brother was in flight school at the time and was able to easily land the plane and taught me how to do it.
As the article states, "Altitude and speed are both controlled by throttle input and pitch angle". So you can't just hit the engines or air brakes button to change your speed. If you lower the nose of the plane, you'll speed up and vice versa! So you have to carefully juggle your speed and altitude by altering both your pitch and your engines/air brakes.
My brother taught me that my speed wouldn't reduce if I'm nosediving, so raise the nose a little while opening my air brakes for a quick reduction in speed and then level out to maintain altitude. The game actually models this somewhat accurately!
- No link to other posts
- This post is at https://relaxing.run/blag/posts/top-gun-landing/
- https://relaxing.run/blag/posts/ gives a 403
- https://relaxing.run/blag/ gives a 403
- https://relaxing.run/ gives a full-page picture of some beautiful mountains
- No Atom/RSS link hidden in source
Not a complaint! If this is an intentional choice, I respect it.
>Request method cautioned for category Weapons/Bombs
SUCCESS = 0
TOO_FAR_LEFT = 2
TOO_SLOW_OR_TOO_LOW = 4
TOO_FAST_OR_TOO_HIGH = 8
MIN_ALTITUDE = 100
MAX_ALTITUDE = 300
MIN_SPEED = 200
MAX_SPEED = 400
MIN_SPEED_200_RANGE = 238
MAX_SPEED_300_RANGE = 338
MAX_HEADING_RIGHT = 8
def landing_skill_check(
altitude: int,
speed: int,
heading: int) -> int:
if altitude < MIN_ALTITUDE:
return TOO_SLOW_OR_TOO_LOW
if altitude >= MAX_ALTITUDE:
return TOO_FAST_OR_TOO_HIGH
if speed < MIN_SPEED:
return TOO_SLOW_OR_TOO_LOW
if speed >= MAX_SPEED:
return TOO_FAST_OR_TOO_HIGH
if speed < 300:
if speed < MIN_SPEED_200_RANGE:
return TOO_SLOW_OR_TOO_LOW
else:
if speed >= MAX_SPEED_300_RANGE:
return TOO_FAST_OR_TOO_HIGH
if heading < 0:
return TOO_FAR_LEFT
if heading >= MAX_HEADING_RIGHT:
return TOO_SLOW_OR_TOO_LOW
return SUCCESSGoing back and trying to do all this via emulation is now a lot harder. I don't know if it's the timing or the fact that I'm just old and crappy now, but if I didn't have the save states of an emulator I would have given up on gaming ages ago due to frustration.
Then again I don't have the hyperfocus and 12 hour marathon gaming sessions like I did for much of my youth.
For realism's (and comedy's) sake, they could have shown a pixel ejecting from the five (I think) pixels that form the jet before it explodes into a fireball, then floating down on a tiny parachute and being rescued by a tiny boat.
...but seriously, you didn't even get your score reduced for crashing the plane on landing?
So the game does not let the player go all the way to perform the landing? That'd be dissatisfying?
It's also on-screen. What's missing is the acceptable ranges -- +/- 100 for altitude, +/- 50 for speed, per the post. Knowing that the slop for altitude is much higher is definitely helpful information.
Most kids did't read the manual? I would rtfm for every game I got my hands on during the car ride home from toysrus or blockbuster. If Mom had several errands to run, I may rtfm a dozen times before I finally got home with the game.
Why not show the last race from Decathlon by Activision to see if my forearm muscles cramp up instinctively.
Look, I already liked the nerdy blog post! I don't need even more reasons to like it.
I think I still have the Top Gun NES cartridge in a box somewhere. Maybe this is a good excuse to fire up the NES and try it.
(I’m pretty sure it was the second mission, it was the one with the space shuttle launch or whatever at the end)
The first mission is to start and land on a carrier. Video games were never even a question: You couldn't copy games and had to pay ridiculous prices for each!
I had a similar feeling towards the N64 some years later. I had a 486 that could do much better 3D and with more interesting games, and there was nothing in the nintendo catalogue that could compete with what I basically had free access to due to the internet.
Before then, just approach the bay straight on and if you go slow enough, you'll dock fine even if it's perpendicular. Probably differs with whatever version you're playing though.
You fly to the entry, point towards it, and then rotate until rotation speed and phase match.
But yea, the docking computer was definitely easier =)
Chances are, this is the site's inaugural post.
Well, you don't get the 10,000 bonus points
"What a shitload of fuck! This game chews turds! This game sucks your balls off and spits them up your ass!"
Granted, I wasn't good at video games in general. And this one infuriated me, because I loved it. I could easily beat the first level, but then I crashed on carrier landing. This happened for years. I only ever saw the first level of this game.
Then one day, while staying at my elementary afterschool sitter's house, one of the kids there told me he played Top Gun as well. He could land, but wasn't very good at the rest of the game.
A plan was formed.
The next day, I brought the cartridge over, and we settled in. I'd play the level, then hand him the controller at which point he'd plant it on the deck. Rinse and Repeat. Top Gun and Top Gun: The Second Mission didn't have too many levels, (6 maybe?) and I don't think it took us too long to beat. Neither one of us had seen much of the game. But working together, we beat both in a matter of hours.
I still look back on that as one of the few NES games I finished without codes or a Game Genie, just the help of a friend. =D
That was an actual thing back in the day, you'd get your parents to let you stay the night at a friend's house and then you'd stay up all night playing NES, eating pizza and watching movies.
Website blocked
Not allowed to browse Weapons/Bombs category
You tried to visit:https://relaxing.run/blag/posts/top-gun-landing/
PS1 -> PS2 -> PS3 or Xbox -> 360 feel more iterative because they started after the 3D era had already begun. We haven't had a new dominant paradigm for gaming since then (besides mobile gaming).
I know there's Tiny Combat Arena from 'Microprose' but its development's taking a while. I'd dearly love to know if there's anything else of that contemporary ilk out there today.
It happened when a buddy and I were completely bored messing around with the game and I remember calling my friends and explaining it but no one "got it" until we showed them.
I had the game and the manual, but I can’t recall if I ever read the manual. I played the game a ton and was maybe 50/50 at the landings, but just followed the on-screen instructions. I could probably have puzzled out the target numbers, but never did (was it in the manual?). Now you can just google the correct values and nail it every time (paying no attention to the on-screen directions).
[edit] incidentally, my “it’s not actually hard” thing from the NES is the dam level in TMNT. It’s a challenge like the first two times you play it, then never again. It’s just not that hard. I think it’s easier than tons of Mario game levels, for instance.
Like most people, you’re probably an absolute expert at landing on the aircraft carrier in Top Gun for the NES. But if you’re in the silent minority that have not yet mastered this skill, you’re in luck: I’ve done a little reverse engineerining and figured out precisely how landing works. Hopefully now you can get things really dialed in during your next practice session. Let’s get those windmill high-fives warmed up!
tl;dr: Altitude must be in the range 100-299, speed must be in the range 238-337 (both inclusive), and you must be laterally aimed at the carrier at the end of the sequence.
As a reminder in case you haven’t played Top Gun in the last few decades (weird), the landing portion of the stage looks like this:

Mercifully, the game suggests you aim right in the middle of the acceptable range per the “Alt. 200 / Speed 288” text on your MFD. Altitude and speed are both controlled by throttle input and pitch angle. There’s no on-screen heading indicator, but the game will tell you if you’re outside of the acceptable range (“Right ! Right !”). The ranges for speed and heading are pretty tight, so focus on those: the range for altitude is much wider.
After about a minute of flying the game checks your state and plays a little cutscene showing either a textbook landing or an expensive fireball. Either way, you get a “Mission Accomplished!” and go to the next level (after all, you don’t own that plane, the taxpayers do):

Memory locations of note:
| Address | Contents | Acceptable range (inclusive) |
|---|---|---|
| $40-$41 | Speed stored as a binary coded decimal | 238 - 337 |
| $3D-$3E | Altitude stored as a BCD | 100 - 299 |
| $FD | Heading, ranging from -32 to +32 | 0 - 7 |
| $9E | Landing state check result | 0; other values change the plane’s trajectory during the crash cutscene |
Speed and altitude are stored as binary coded decimals, likely to simplify the rendering of on-screen text. For example, the number 1234 is stored as 4660 (ie., hex 0x1234).
The function at $B6EA performs the state check and writes the result at $9E. If you’re just here to impress your friends and don’t want to put in the practice, the game genie code AEPETA will guarantee a landing that Maverick and Goose (spoiler: may he rest in peace ) would be proud of.
Here’s my annotated disassembly for those following along at home:
landing_skill_check:
06:B6EA: LDA $3E ; Load altitude High cent
06:B6EC: BEQ $B724 ; Branch if High cent == 0 (altitude < 100)
06:B6EE: CMP #$03
06:B6F0: BCS $B720 ; Branch if High cent >= 3 (altitude >= 300)
06:B6F2: LDA $41
06:B6F4: CMP #$04
06:B6F6: BCS $B720 ; Branch if High cent is >= 04 (speed >= 400)
06:B6F8: CMP #$02
06:B6FA: BCC $B724 ; Branch if High cent is < 02 (speed < 200)
06:B6FC: BEQ $B706 ; Branch if High cent == 02 (speed >= 200 && speed <= 299)
speed_300s:
06:B6FE: LDA $40 ; Load speed Low cent
06:B700: CMP #$38
06:B702: BCS $B720 ; Branch if Low cent >= 38 (speed >= 338)
06:B704: BCC $B70C ; Branch if Low cent < 38 (speed < 338)
speed_200s:
06:B706: LDA $40
06:B708: CMP #$38
06:B70A: BCC $B724 ; Branch if speed < 238
speed_ok:
06:B70C: LDA $FD ; Load heading
06:B70E: BMI $B718 ; Branch if heading < 0 (too far left)
06:B710: CMP #$08
06:B712: BCS $B71C ; Branch if heading >= 8 (too far right)
06:B714: LDX #$00 ; speed ok, heading ok; 0 == success
06:B716: BEQ $B726 ; Branch to return
too_far_left:
06:B718: LDX #$02
06:B71A: BNE $B726
too_far_right:
06:B71C: LDX #$04
06:B71E: BNE $B726
too_fast_or_too_high:
06:B720: LDX #$08
06:B722: BNE $B726
too_slow_or_too_low:
06:B724: LDX #$04
return:
06:B726: STX $9E
06:B728: RTS
Now get out there, and snag that third wire.
12/14/2025
"Reliance on documentation is the hallmark of a novice & a coward."
I miss being able to play a game and have things be somewhat apparent within the game. Nowadays it seems like you have to have a second monitor with the wiki open.
https://flightsimulator-forums-cdn.azureedge.net/uploads/def...
Thats from version 4 I think, but I vaguely recall it even being in the earlier monochrome versions ...
I don't mind instant death scenarios, as long as there is a quick restart and no game over mechanic (Celeste got this perfect, IMO). It is wild to me just how many of these kinds of scenarios there are in memorable games from the 8/16 bit (and before) era.
my son plays DCS and that game just got a C-130 module and he showed me youtube vids of people landing on carriers. I had to think hard if that was an actual thing or not. Seems like a C-130 can land/take-off pretty much anywhere so why not a carrier?
But you don't do the refueling at those speeds, heh.
I loved them too. During that era I got to try some kind of flight simulator on a Silicon Graphics. Smoooth shapes, extremely high resolution, must have been lots of tiny triangles, and nice shading. I remember thinking, this is the future, can’t wait to get this in personal computers!
Nah, instead almost two decades of muddy lores textures on lopoly models.
I guess now we are finally there, with raytracing in games. But I would still like to see the nontextured aesthetic make a comeback.
For me, half the fun was trying to figure out how to play the game.
"Bogey at your 6", the combat theme from the game, but remixed as if Konami had made it for the VRC6, the NES mapper chip that added 3 additional oscillators that made the Japanese release of Castlevania III what it was; he made this using Scream Tracker (or possibly a newer tracker, but its saved in S3M format), because tracker-like chip emulators didn't exist yet (Furnace, et al).
(Okay, maybe they aren't playing the NES explicitly, but same thing.)
There was a lord of the rings PC RPG I played around 1990, I believe, where many of the NPC interactions said to refer to page N, paragraph M. They didn't have the space to store all the text in the game.
Your statement applies today; game design back then was different, manuals were not frowned upon and often exciting to read through. They were part of the game.
Following that rule puts a hard cap on the game's depth and complexity at the design level.
It's probably why most games today are pretty shallow.
More generally, it's also why most software grew from tools into Fischer-Price toys over the past two decades.
That's going too far.
Also, we're talking about the 8-bit era: 1) technical limits prevented a lot of in-game exposition that you could do now and 2) before the internet, people had fewer options for reading material. I read every manual for every NES and SNES game I ever had, multiple times. If I was into a game my options were limited to 1) play it, 2) read the manual if I couldn't play it (e.g. if I wasn't at home or not allowed to take over the TV to play).
Interestingly, the instructions are actually all correct. If it says, "Left! Left!" for instance you will crash if you don't fix it.
I think the disconnect might be that altitude and speed somewhat feedback on each other and it takes time for your inputs to settle, so it always feels like you're chasing the instructions.
[0] https://strategywiki.org/wiki/Legacy_of_the_Wizard/Walkthrou...
He did that deleted episode on Custer's Revenge, and then he went back and made it even funnier by censoring it.
ORIGINAL: https://cinemassacre.com/atari-porn-angry-video-game-nerd-av...
In the Halls of the Usurper (Pridemoor Keep) https://youtu.be/B9ICOx8YWWw
Fighting with All of Our Might https://youtu.be/Sv9IhzPPkxg
My school is all-girls though, maybe the gender matters.
The region of reversed command -- pretty cool that such a simple NES game managed to replicate that counter-intuitive part of the flight envelope.
https://agairupdate.com/2021/10/02/the-region-of-reversed-co...