48 comments

[ 2.7 ms ] story [ 61.4 ms ] thread
Lers of Spoil: this is about a NES game ;-) Pretty cool still, especially if one's into reverse engineering.
Meta: Should have "NES" added to title to clarify it's about a game, not (as I thought) the movie.
The mission accomplished regardless of crash or land is hilarious
Come on, buddy, pull up. Pull up, Cougar.
If you're into carrier landings and have a VR headset, I highly recommend checking out VTOL VR.
> 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):

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?

I remember this being next to impossible as a kid. The whole game was tough, but this was on another level.
I never played Top Gun, but I did grow up playing "Turn and Burn: No Fly Zone" for the SNES. All these years later, it's still amazing to me how much the graphics improved from one console generation to the next. I don't remember any other console transition being so consequential from a graphics perspective.
Console Generations are a step function.
If I remember correctly, this game was very briefly featured on the Dungeons & Daddies podcast in the most recent season.
I actually learned how to do this by playing the aircraft carrier landing simulator game that was at the USS Intrepid. It's a little more fleshed out but the speed range and altitude is roughly the same. The simulator gave you a light indicator to assist with your approach.
This is one of those cultural memes ("The Top Gun landing was ImPoSsIbLe") that tells on the person saying it for not having read the manual. If you don't read the manual, the landing sequence is pretty much impossible to figure out. If you do, you pretty much get it the first and every time after that.
Damn, that was a walk down memory lane.
Reminds me a bit of the game Retaliator, when I was 12 a class mate earned himself a night of "pick your own time to go to bed at camp" because he could show the teacher how to land. [0, the landing is at the very end]. I think at the time nobody knew what key to hit to deploy the landing gear (and flaps, though I think you could land without flaps). And since it was all copied stuff there was no book, no internet...

[0] https://www.youtube.com/watch?v=JYwcrxbhiLs

It took me months of play as a kid to finally land on that carrier. I felt like a Maverick himself when I finally landed it.
Now I just need to get the hang of docking in Elite.
This business will get out of control. It will get out of control and we’ll be lucky to live through it.
The best part:

    > Best read with Danger Zone playing on loop
“the landing portion of the stage looks like this” Have not seen that ever and had an NES
The landing was a piece of cake compared to the inflight refuling mission! I played Top Gun until the casette broke but could only pass that mission a handful of times.
I was pretty smol when I played this game last. I don't think I've ever managed to actually land on that hangar ship. That was what my older brothers were for!
I love sim hijinks. It's possible to reliably land a 737 on the carrier in X-plane: just take off with 30min of fuel, drag it in with full flaps and high power, and set the parking brake before you touch down.
Just for comparison, this is how the code could look like in Python:

  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 SUCCESS